我有一个包含三列的用户表。
Username Accepted Rejected
User 1 1 NULL
User 1 1 NULL
User 1 NULL 1
User 2 1 1
User 3 1 NULL
User 3 1 NULL
User 2 NULL 1
User 3 NULL NULL
User 2 NULL NULL
我想显示所有具有接受/拒绝列数的用户的列表,如下所示:
Username Accepted Rejected
User 1 2 1
User 2 1 2
User 3 2 NULL
最好的方法是什么?
答案 0 :(得分:2)
如果Accepted和Rejected可以包含1,0,则null只使用sum,因为如果提供的所有值都为null,sum将返回null:
select UserName,
sum(Accepted) Accepted,
sum(Rejected) Rejected
from ATable
group by UserName
Count将在user3的Rejected列中返回零。
答案 1 :(得分:1)
选择 u.username, 案件 当COUNT(u.accepted)= 0时为空 其他 COUNT(u.accepted) 结束作为接受, 案件 当COUNT(u.rejected)= 0时为空 其他 COUNT(u.rejected) 结束时被拒绝 从 usr1你
GROUP BY u.username