2012-07-23 62 views
2

我有一个像下面旋转SQL表

Code  Attribute  Value 
-------------------------------------- 
USA   Population  300M 
USA   Language   US English 
CANADA  Population  30M 
USA   Capital   DC 
CANADA  Language   CA English 

我如何可以旋转台90度,并作出视图像下面的表运行查询SP就可以了?

Code  Language  Population  Capital 
------------------------------------------------------ 
USA   US English   300M    DC 
CANADA  CA English   30M    NULL 
+3

用于旋转表90术语度被称为'PIVOT'。 – mellamokb 2012-07-23 22:07:04

+1

看到此问题:[SQL Server PIVOT示例?](http://stackoverflow.com/questions/24470/sql-server-pivot-examples) – YetAnotherUser 2012-07-23 22:08:33

回答

9

你可以使用PIVOT(用于SQL Server 2005 +):

SELECT * 
FROM YourTable AS T 
PIVOT (MIN(Value) FOR Attribute IN ([Language],[Population],[Capital]) AS PT 

对于所有版本的SQL Server,你可以使用这个:

SELECT Code, 
     MIN(CASE WHEN Attribute = 'Language' THEN Value END) [Language], 
     MIN(CASE WHEN Attribute = 'Population' THEN Value END) [Population], 
     MIN(CASE WHEN Attribute = 'Capital' THEN Value END) [Capital] 
FROM YourTable 
GROUP BY Code 
+0

非常感谢。解决方案很完美。 – Mertez 2012-07-23 22:57:48