2012-08-16 56 views
1

从这个表SQL:数列中的每一行的值,并返回计数为多列

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

要显示计数D_Value到这个表

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

你期望有多少个不同的值? – gbn 2012-08-16 07:29:57

+0

为什么不能用传统的方式来做(每行值,计数对):'选择D_value,通过D_value'从表组中计数(*)? – 2012-08-16 07:33:06

回答

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。我不会去那里...

+0

谢谢。这是帮助。 :) – Jimmy428 2012-08-16 07:51:20

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

这将是行明智的OP问列明智。 – yogi 2012-08-16 07:31:15

相关问题