我有一段时间看着这个问题,但我知道我可以在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
我的信仰不正确?
答案 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