基于列的总和值&结合

时间:2014-08-20 14:00:20

标签: sql sql-server sql-server-2005

很抱歉,如果标题没有意义。

我有以下数据:

AgtID | AppsStatusType | ColPrem
--------------------------------
1234  | PD             | 10.00
1234  | IS             | 50.00
5678  | CP             | 25.00
5678  | IS             | 25.00
5678  | PD             | 100.00

我需要通过AgtID对这些进行分组,然后得到所有IS或CP的总和,以及所有PD的总和。最终结果应如下所示:

AgtID | IS/CP | PD
-----------------------
1234  | 50.00 | 10.00
5678  | 50.00 | 100.00

有什么建议吗?我在SQL 2005中。

2 个答案:

答案 0 :(得分:3)

你可以这样做,例如,使用带有case子句的和。

select 
  AgtId,
  SUM(case when AppsStatusType IN ('IS', 'CP') then ColPrem else 0 end) as IS_CP,
  SUM(case when AppsStatusType = 'PD' then ColPrem else 0 end) as PD
FROM yourtable
GROUP BY AgtId

请参阅SqlFiddle

答案 1 :(得分:1)

select 
AgtID , 
sum(case when AppsStatusType in ('IS','CP') then ColPrem else 0 end ) as [IS/CP],
sum(case when AppsStatusType in ('PD') then ColPrem else 0 end ) as [PD]
from your_table
group by Agtid