我在做选择:
select id,
status,
count(status) as qtd
from user
group by id, status;
回报是:
id | status | qtd
1 YES 5
1 NO 3
2 YES 3
2 NO 1
我想要这个:
id | YES | NO
1 5 3
2 3 1
感谢。
答案 0 :(得分:2)
您可以这样做,使用sum()中的表达式(如sum(status ='Yes')
)将导致布尔值(0/1),因此您可以根据您在sum函数中提供的条件计算您的计数
select id,
sum(status ='Yes') as `YES`,
sum(status ='No') as `NO`
from user
group by id;
答案 1 :(得分:2)
你可以使用案例逻辑来做你想要的事情。基本上你想要转动结果并转动它们你必须使用带有条件的聚合来伪造数据透视表,因为mysql没有办法完成那个< / p>
SELECT
id,
SUM(CASE status WHEN 'Yes' THEN 1 ELSE 0 END) as 'YES',
SUM(CASE status WHEN 'No' THEN 1 ELSE 0 END) as 'NO'
FROM user
GROUP BY id;
+----+-----+----+
| id | YES | NO |
+----+-----+----+
| 1 | 5 | 3 |
| 2 | 3 | 1 |
+----+-----+----+