计算属于同一列SQL Server的特定值

时间:2017-06-07 08:12:21

标签: sql sql-server count

我想请求帮助我想计算记录数,但只有一个列的2个特定值有两个条件:

首先计算记录:

将(服务)作为联系人

service | state | address
service1| 1     |123
service2| 1     |321
service3| 3     |332
service1| 2     |333
service2| 2     |111
service3| 3     |333

第一个结果

Service | Contacts | status
service1| 1        | 1
service1| 1        | 2
service1| 1        | 3
service2| 1        | 1
service2| 1        | 2
service2| 1        | 3

如果状态= 1和2则添加到其他0(仅计算' s"状态"等于1和2。

结果:

最终结果

Service  | Contacts 
Service1 | 2       
Service2 | 2
抱歉这令人困惑 谢谢你的大力帮助

2 个答案:

答案 0 :(得分:1)

这适用于所有主要数据库

SELECT service,
SUM(CASE WHEN status IN(1,2) THEN contacts ELSE 0 END) as Contacts
FROM (your query) as x
GROUP BY service

答案 1 :(得分:0)

select service,
       sum(case when status in(1,2) then contacts else 0 end) as contact_count
from MyTable
group by service

这样做是评估每一行,并在contacts中包含sum值,其中状态是必需的值。由于它是聚合,您需要按service

进行分组