汇总汇总数据

时间:2008-10-30 01:21:49

标签: sql sql-server sql-server-2005 tsql

我有一张如下表格:

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中使用?

5 个答案:

答案 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”为您执行此操作, 请查看以下链接:

http://msdn.microsoft.com/en-us/library/ms177410.aspx

答案 4 :(得分:0)

我认为您可以使用此链接:

Sum of unique records - better performance than a cursor

我认为使用PIVOT函数具有最佳性能评估者SUM()函数。!