我有下表:
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中执行此操作?
答案 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 |
+----+----+----+