2016-01-07 54 views
-1

尋找將列轉換爲sql server中的行的方法。將列轉換爲ID

我有下面的表:

[ID] [Action] [Note] [Resolution] 

以下是我希望得到儘可能與列結果:[ID] [Notes] 而結果值將是:

'1' 'Action1' 
'1' 'Note1' 
'1' 'Resolution1' 
'2' 'Action2' 
'2' 'Note2' 
'2' 'Note2.1' 
'2' 'Resolution2' etc 

任何想法如何在T-SQL中做到這一點?對於註釋字段也可能有多個條目。謝謝!

+0

你想知道的是'unpivot'。這裏解釋它有幾個問題,以及手冊。 – jpw

+0

特別是「多筆記條目」我不清楚:請提供逼真的樣本數據和期望的輸出 – Shnugo

+0

感謝您的回覆。對於筆記,在源表中,[id]可以在表格中具有相同的動作和分辨率,但筆記的數據不同。所以多行具有相同的ID,動作和分辨率。所以我正在尋找將它們轉換爲按行號分組的行,然後是任何筆記,然後是分辨率。 – rory83

回答

1

假設你的源表和數據如下:

-- select * from t: 
ID Action Note Resolution 
--- ------- ------- ----------- 
1 Action1 Note1 Resolution1 
2 Action2 Note2 Resolution2 
2 Action2 Note2.1 Resolution2 

這個查詢:

select distinct id, notes 
from (select * from t) as source 
unpivot (notes for ids in ([action], [note], [resolution]) 
) as unpivotted_table 

會產生這樣的結果:

id notes 
--- ------ 
1 Action1 
1 Note1 
1 Resolution1 
2 Action2 
2 Note2 
2 Note2.1 
2 Resolution2 

它看起來很像你正在請求。

有關unpivot運營商如何工作的詳細信息here