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;
我正在使用 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;