使用枢轴将行转换为列

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

对于动态的列列表,您可以进行相应的更改

【讨论】:

以上是关于使用枢轴将行转换为列的主要内容,如果未能解决你的问题,请参考以下文章

使用R将行转换为列,将列转换为行

如何使用枢轴将行转换为postgres中的列?让我来计算一下

SQL 将行合并为列

将行转换为列

使用 PIVOT 将行转换为列

如何使用 Postgresql 将行转换为列?