连接表,根据列中的值进行计数

时间:2011-10-06 14:45:10

标签: sql sql-server

我有两张桌子:

表格alpha:

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结果的情况下获得表格,但这不是我想要的。

提前致谢!

1 个答案:

答案 0 :(得分: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