2016-12-05 19 views
1

列不同的標誌的選擇計數我有一個表:在MySQL的

id flag 
1 Y 
1 Y 
1 Y 
1 N 
1 N 
2 Y 
2 N 
2 N 
3 Y 
3 N 

我想要做的SELECT語句,這將給我下面的輸出。

id count_flag_Y count_flag_N 
1  3    2 
2  1    2 
3  1    1 

我用的是select case方法,但越來越語法錯誤嘗試。

SELECT id,SUM(CASE WHEN flag= 'Y') as count_flag_Y, 
SUM(CASE WHEN flag= 'N') as count_flag_N 
from tablename 
GROUP BY id 

有沒有辦法做到這一點?

回答

4

您的查詢已經不遠了,您只有CASE表達式存在輕微問題。試試這個:

SELECT id, 
     SUM(CASE WHEN flag= 'Y' THEN 1 ELSE 0 END) AS count_flag_Y, 
     SUM(CASE WHEN flag= 'N' THEN 1 ELSE 0 END) AS count_flag_N 
FROM tablename 
GROUP BY id 
2

你很接近,但在MySQL不需要CASE

SELECT id, SUM(flag = 'Y') as count_flag_Y, 
     SUM(flag = 'N') as count_flag_N 
FROM tablename 
GROUP BY id; 

的MySQL把布爾表達式就像在一個數值上下文整數,「1」爲真,「 0「爲假。