查询计数条目

时间:2014-05-14 10:34:59

标签: sql sql-server join

我有两张这样的桌子。

A   B  
1   12  
2   13  
3   12  
4   13  
5   15  


B   C
12  APPLE  
13  ORANGE  
14  MANGO  
15  BANANA  

我需要输出如下......

count(A)  B  C  
2         12 APPLE  
2         13 ORANGE  
0         14 MANGO  
1         15 BANANA  

我已经使用连接编写了查询但是在空值的情况下,我仍然坚持将计数显示为零。

3 个答案:

答案 0 :(得分:3)

使用left join获取table2的值,即使table1

中没有记录也是如此
select T2.B, T2.C, count(T1.A)
from table2 T2
left join table1 T1 on T1.B = T2.B
group by T2.B, T2.C

答案 1 :(得分:2)

试试这个:

SELECT COUNT(T1.A) as Cnt,T2.B,T2.C
FROM Table2 T2 LEFT JOIN
     Table1 T1 ON T1.B=T2.B
GROUP BY T2.B,T2.C

结果:

CNT   B     C
2     12    APPLE
1     15    BANANA
0     14    MANGO
2     13    ORANGE

请参阅SQL Fiddle中的结果。

答案 2 :(得分:1)

只是给你另一种选择。您不需要连接,因为您只想显示table2记录以及您可以在子查询中获得的另一个值。

select (select count(*) from table1 where table1.B = table2.B) as cnt, B, C
from table2
order by B;