2012-08-01 68 views
0

我目前無法進行測試,但尚未找到任何相關示例。 我想嘗試這樣的事:我可以使用這樣的案例說明嗎?

SELECT member.name, DISTINCT member.id, 
    COUNT(CASE WHEN member.code = 'A' 
    THEN 1) AS CountACode, ... CountBCode, COUNT(*) as CountTotal FROM member 

我明白,我可以做不同的,但我有我已經在使用,這將是這麼多更容易做一些其他相關的列。但是我相信我被告知我錯了,沒有任何跡象表明爲什麼。有人會告訴我問題在哪裏嗎?

+0

case語句本身是好的(減去缺少'END')。 – mellamokb 2012-08-01 13:30:49

回答

0

你不可以在條款之後立即寫上DISTINCT條款。

是的,你可以使用CASE WHEN語句中COUNT

SELECT DISTINCT member.name, member.id, 
     COUNT(CASE WHEN member.code = 'A' THEN 'something..' END) AS CountACode, 
     ... CountBCode, 
     COUNT(*) as CountTotal 
FROM member; 
0

你的問題是,它適用於整個結果集,而不只是單場DISTINCT

爲計數,這個正常的模式是我們SUM

SUM(CASE WHEN Condition = value THEN 1 ELSE 0 END) 
0
SELECT member.name, member.id, SUM(CASE WHEN member.code = 'A' THEN 1 ELSE 0) AS CountACode, ... CountBCode, COUNT(*) as CountTotal 
FROM member 
GROUP BY member.name, member.id