2012-04-17 49 views
1

比方說,我有一個返回下面的一個簡單的選擇查詢:回報列垂直

ID Name1 Name2 Description1 Description2 Notes1 Notes2 
1  A  B  AA    BB  AAA BBB 
2  C  D  CC    DD  CCC DDD 

,我想返回的數據集如下:

ID ColumnName 1st 2nd 
1 Name   A B 
1 Description AA BB 
1 Notes  AAA BBB 
2 Name   C D 
2 Description CC CC 
2 Notes  DDD DDD 

做,在任何SQL Server方式2008-R2? 看起來這是一個PIVOT的工作,但他對如何通過PIVOT實現這一點感到困惑

+0

如果select查詢中的列可以是動態的,而不是沒有動態SQL的。它是否必須用SQL查詢完成? – mellamokb 2012-04-17 00:48:27

回答

2

你可以使用它,假設這些值是靜態的或者不是太多以至於不能用你的實際值修補它,痛苦的:

SELECT ID, 'Name' ColumnName, Name1 '1st', Name2 '2nd' 
FROM YourTable 
UNION 
SELECT ID, 'Description' ColumnName, Description1 '1st', Description2 '2nd' 
FROM YourTable 
UNION 
SELECT ID, 'Notes' ColumnName, Notes1 '1st', Notes2 '2nd' 
FROM YourTable 

爲什麼數據規範化如此重要的又一個很好的例子。

+0

+1 http://www.sqlfiddle.com/#!3/d796b/3 – mellamokb 2012-04-17 00:52:47

+0

如果任何列數據類型不是字符串,則上述答案將失敗... – Baz1nga 2012-04-17 00:55:57