选择MySQL列中不同标志的数量

Shu*_*m R 2 mysql

我有一张桌子:

id  flag
1    Y
1    Y
1    Y
1    N
1    N
2    Y
2    N
2    N
3    Y
3    N
Run Code Online (Sandbox Code Playgroud)

我想做为select语句,这将给我以下输出。

id   count_flag_Y   count_flag_N
 1        3               2
 2        1               2
 3        1               1
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用该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
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

Tim*_*sen 5

您的查询距离不远,您的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
Run Code Online (Sandbox Code Playgroud)