按ID将列转换为行

时间:2016-01-07 20:21:22

标签: sql-server tsql

寻找一种在sql server中将列转换为行的方法。

我有一个包含以下列的表格:

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

以下是我希望得到的结果列:[ID] [Notes] 结果值为:

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

我是如何在T-SQL中做到这一点的?此外,对于注释字段,可能有多个条目。谢谢!

1 个答案:

答案 0 :(得分:1)

假设您的源表和数据如下所示:

filters

此查询:

-- 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 运算符如何运作here的更多信息。