2011-10-06 163 views
1

列值算我有两个表:连接表的基础上,

表阿尔法:

ID | Name 
--------- 
1 | A 
2 | B 
3 | C 

表测试:

ID | state 
---------- 
1 | 1 
1 | 2 
1 | 2 
2 | 1 

我想获得类似的结果如下:

ID | Count(state=1) | Count (state=2) 
------------------------------------- 
1 | 1    | 2 
2 | 1    | 0 
3 | 0    | 0 

我该怎么办这与SQL? 我可以得到没有ID 3结果的表格,但那不是我想要的结果。

在此先感谢!

回答

3
SELECT a.ID, 
     SUM(CASE WHEN b.state = 1 THEN 1 ELSE 0 END) AS State1Count, 
     SUM(CASE WHEN b.state = 2 THEN 1 ELSE 0 END) AS State2Count 
    FROM alpha a 
     LEFT JOIN beta b 
      ON a.ID = b.ID 
    GROUP BY a.ID 
+0

谢谢。关键词LEFT就是答案! –