2012-08-16 51 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

相關問題