Redshift SQL -- 按 id 将行转置为列

Redshift SQL -- transposing rows by id into columns

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

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

Table

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

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

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