Redshift SQL - 将行按 id 转换为列

Posted

技术标签:

【中文标题】Redshift SQL - 将行按 id 转换为列【英文标题】:Redshift SQL -- transposing rows by id into columns 【发布时间】:2021-05-25 13:03:33 【问题描述】:

我正在使用 Redshift SQL。我想将“表”中“Id1”的不同行转换为列。 因此,输出应该像最底部的表一样,为每个“Id2”提供权重作为列。或者,将权重连接到一列中。

任何有关功能或使用方法的指导将不胜感激。

表格

Id1 Id2 Weight
1 1 55
1 2 65
2 1 78
3 1 70
3 2 90
3 3 82
4 4 44
4 4 51

想要的输出

Id1 Weight
1 55-65
2 78
3 70-90-2
4 44-51

【问题讨论】:

【参考方案1】:

您可以使用LISTAGG() 来执行此操作:

SELECT Id1, LISTAGG(Weight, '-') WITHIN GROUP (ORDER BY Id2)
FROM yourtable
GROUP BY Id1; 

【讨论】:

以上是关于Redshift SQL - 将行按 id 转换为列的主要内容,如果未能解决你的问题,请参考以下文章

如何展平 SQL 查询的结果 - 将行转换为列?

SQL Server - Pivot 将行转换为列(带有额外的行数据)

将行转换为涉及日期的列

SQL将行转置为列(按键变量分组)?

SQL:将行转换为列

Oracle SQL 将行转换为列