在T-SQL中按ID获取变量计数

时间:2017-08-09 20:14:51

标签: sql-server tsql

我有下表:

ID  DS
------
1   IP  
1   IP  
1   OP  
1   OP  
2   IP  
2   OP  
2   IP  
2   OP  
2   IP  
3   OP  
3   IP  
3   OP  
4   OP  
5   OP  
5   IP  
5   OP  

我希望这个表返回:

ID  IP  OP
----------
1   2   2  
2   3   2  
3   1   2  
4   0   1  
5   1   2  

如何在T-SQL中执行此操作?

1 个答案:

答案 0 :(得分:1)

您可以查询如下:

Select Id, Sum(case when DS = 'IP' then 1 else 0 end) as IP,
           Sum(case when DS = 'OP' then 1 else 0 end) as OP
   from yourtable
group by Id

输出如下:

+----+----+----+
| Id | IP | OP |
+----+----+----+
|  1 |  2 |  2 |
|  2 |  3 |  2 |
|  3 |  1 |  2 |
|  4 |  0 |  1 |
|  5 |  1 |  2 |
+----+----+----+