如何对组进行求和并在单独的列中提供总计?

时间:2010-12-15 20:45:04

标签: tsql group-by sum

我有一段时间看着这个问题,但我知道我可以在LINQ中做到这一点。我开始考虑可以扩展的解决方案,如果这是一个变化大的数据集。我正在使用SQL构建我的经验,并相信有一种方法可以在不执行插入的情况下获得结果。

我所拥有的数据如下所示:

ids type    total
A01 x   1
A01 x   2
A01 x   3
A01 y   4
B01 y   2
B01 x   3
B01 y   1
C01 x   1
C01 y   2
C01 x   5
C01 y   6

我想要的是这样的数据:

id  x total y total
A01 6   4
B01 3   3
C01 6   8

我的信仰不正确?

2 个答案:

答案 0 :(得分:3)

  ...
  SUM(CASE type WHEN'x' THEN total ELSE 0 END),
  SUM(CASE type WHEN 'y' THEN total ELSE 0 END)
   ...
  Group by
      Id

很抱歉很难在电话上给出完整答案

答案 1 :(得分:1)

这称为数据透视表,有很多方法可以实现它。

如果您使用的是SQL Server 2005或更高版本,则PIVOT运算符(MSDN)是一个很好的选项:

select id, [x], [y]
from temp d
  PIVOT ( sum(total) for type in ([x],[y]) ) p