汇总汇总数据
问题描述:
我有一个表像如下:汇总汇总数据
SoftwareName Count Country Project 15 Canada Visio 12 Canada Project 10 USA Visio 5 USA
如何查询它给我的总结一样......
SoftwareName Canada USA Total Project 15 10 25 Visio 12 5 17
如何在T-SQL吗?
答
SELECT SoftwareName,
SUM(CASE Country WHEN 'Canada' THEN [Count] ELSE 0 END) AS Canada,
SUM(CASE Country WHEN 'USA' THEN [Count] ELSE 0 END) AS USA,
SUM([Count]) AS Total
FROM [Table]
GROUP BY SoftwareName;
答
这被称为表旋转。在你的简单情况下,只有两列;总的来说,可能会有200个左右的国家,在这种情况下,这种转变变得相当困难。
有许多资源在线描述如何做到这一点:谷歌'枢轴表sql'。
在SQL 2005
答
OK ......下面介绍如何使用PIVOT做到这一点:
SELECT Softwarename, Canada, USA, Canada + USA As TOTAL from SoftwareDemo
PIVOT
(
SUM([Count])
FOR Country
IN (Canada, USA)
) AS x
Softwarename Canada USA TOTAL
-------------------------------------------------- ----------- ----------- -----------
Project 15 10 25
Visio 12 5 17
(2 row(s) affected)
答
您好Marlon,我也试过这个解决方案,尽管我在执行时间方面没有看到任何改进,但我认为这个解决方案非常优雅,并且以后很容易修改。非常感谢。 – sammydc 2008-10-30 18:44:07