SQL:计算列中的每个行值并将计数返回到多个列

时间:2012-08-16 07:28:47

标签: sql

从此表

D_value
-------
A 
B 
B 
C 
C 
C 

在此表中显示计数D_Value

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

2 个答案:

答案 0 :(得分:2)

要获得单行,请使用此功能。

SELECT
   COUNT(CASE WHEN D_Value = 'A' THEN 1 END) AS A,
   COUNT(CASE WHEN D_Value = 'B' THEN 1 END) AS B,
   COUNT(CASE WHEN D_Value = 'C' THEN 1 END) AS C
FROM
   MyTable

这适用于有限和固定数量的值来计算

如果你不知道有多少不同的值,那么你需要做一个简单的聚合并在客户端代码中创建一行。

SELECT D_value, COUNT(*) FROM MyTable GROUP BY D_value;

但是,对于不存在的值,这不会给出零计数。所以你需要一个查找表和LEFT JOIN。我不会去那里......

答案 1 :(得分:0)

select D_value,count(*) from table group by D_value;