我有一张如下表格:
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中使用?
答案 0 :(得分:6)
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;
答案 1 :(得分:3)
好的......以下是使用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)
答案 2 :(得分:1)
这称为表旋转。在你的简单案例中,只有两列;一般来说,可能有200个左右的国家,在这种情况下,枢转变得相当困难。
网上有很多资源描述如何操作:Google for“pivot table sql”。
答案 3 :(得分:1)
在SQL 2005或更高版本中有-SQL关键字“Pivot”为您执行此操作, 请查看以下链接:
答案 4 :(得分:0)
我认为您可以使用此链接:
Sum of unique records - better performance than a cursor
我认为使用PIVOT函数具有最佳性能评估者SUM()函数。!