使用数据透视表填充数据

use*_*873 3 sql pivot sql-server-2008

我有一张这样的桌子,

country 2007    2008    2009
 UK      5       10      20
 uk      5       10      20
 us     10       30      40
 us     10       30      40
Run Code Online (Sandbox Code Playgroud)

但我想像这样填充表格,

country year    Total volumn
 uk     2007    10
 uk     2008    20
 uk     2009    40
 us     2007    20
 us     2008    60
 us     2009    80
Run Code Online (Sandbox Code Playgroud)

如何使用数据透视表或任何其他方法在SQL Server 2008中执行此操作.

http://sqlfiddle.com/#!3/2499a

Ale*_*nko 5

SELECT country, [year], SUM([Total volumn]) AS [Total volumn]
FROM (
      SELECT country, [2007], [2008], [2009]
      FROM dbo.test137
      ) p
UNPIVOT 
([Total volumn] FOR [year] IN ([2007], [2008], [2009])
) AS unpvt
GROUP BY country, [year]
ORDER BY country, [year]
Run Code Online (Sandbox Code Playgroud)

请参阅演示 SQLFiddle