寻找一种在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中做到这一点的?此外,对于注释字段,可能有多个条目。谢谢!
答案 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的更多信息。