2012-04-17 13 views
1

のは、私は次のことを返す単純なSELECTクエリがあるとしましょう:戻り列垂直

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

選択クエリの列を動的SQLにすることはできません。それはSQLクエリで完了する必要がありますか? – mellamokb

答えて

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 

データ正規化がそれほど重要であるというもう1つの素晴らしい例です。

+0

+1 http://www.sqlfiddle.com/#!3/d796b/3 – mellamokb

+0

列のデータ型のいずれかが文字列でない場合、上記の応答は失敗します。 – Baz1nga