我有一個表像如下:彙總彙總數據
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嗎?
我有一個表像如下:彙總彙總數據
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或更高版本有-SQL關鍵字,這是否對你來說, 請查看以下鏈接 「透視」:
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