2010-12-15 56 views
1

我有一阵看着这个问题,虽然我知道我可以在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 

我的我的信念不正确的?

回答

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

对不起难以充分答案的电话

+0

我想你想总结的计数。这是正确的格式,但“总计”不起作用。 – 2010-12-15 21:00:00

+0

@mark sqldev:条件总和是需要的。为什么总数? – gbn 2010-12-15 21:02:58

+0

我明白了,你知道了,数据在我看来就像一个ID。你是对的(+1) – 2010-12-15 21:05:02

1

这就是所谓的透视表,并且有多种方式来完成它。

如果您使用SQL Server 2005或更高时,PIVOT运营商(MSDN)是一个整洁的选择:

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