将用户和值的列表聚合到一个包含用户列表和值计数的表中

时间:2012-04-03 09:04:21

标签: sql sql-server

我有一个包含三列的用户表。

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

最好的方法是什么?

2 个答案:

答案 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