使用枢轴将行转换为列
Posted
技术标签:
【中文标题】使用枢轴将行转换为列【英文标题】:Convert rows to columns using pivots 【发布时间】:2017-02-06 15:40:36 【问题描述】:我有一张这样的桌子:
col1 col2
00001 21
00001 12
00001 34
00001 36
00001 25
00002 32
00002 45
00002 64
00002 88
00002 21
.....
to
000001 21 12 34 36 25
000002 32 45 64 88 21
....
我知道它可以通过枢轴来解决,但我无法构建正确的查询
有什么想法吗?
【问题讨论】:
您将如何决定 5 个新字段中的哪个值?到目前为止,您尝试过什么? 【参考方案1】:SO 中有很多例子......正如 Hart CO 提到的,您在这方面有没有尝试过?
发布我的查询供您参考
;with cte as (
select *, RowN = Row_number() over (partition by col1 order by col1) from #yourtable )
select * from cte
pivot (max(col2) for RowN in ([1],[2],[3],[4],[5])) as p
对于动态的列列表,您可以进行相应的更改
【讨论】:
以上是关于使用枢轴将行转换为列的主要内容,如果未能解决你的问题,请参考以下文章