如何组合Amazon Redshift中的行

Mar*_*dad 3 sql join amazon-redshift

我正在使用亚马逊红移.如何组合列的结果.

如果原始行是:

*ID   Name  Color
----------------
1   John   White
1   John   Black
2   Mark   Blue
2   Mark   Red*
Run Code Online (Sandbox Code Playgroud)

结果应该是:

*ID   Name  Color
----------------
1   John   White Black
2   Mark   Blue Red*
Run Code Online (Sandbox Code Playgroud)

Use*_*ady 6

Redshift为您提供所需的功能LISTAGG()

SELECT id, name, LISTAGG(Color,' ') AS Colors
FROM yourtable
GROUP BY id, name
Run Code Online (Sandbox Code Playgroud)

对于查询中的每个组,LISTAGG聚合函数根据ORDER BY表达式对该组的行进行排序,然后将值连接成单个字符串. http://docs.aws.amazon.com/redshift/latest/dg/r_LISTAGG.html

SELECT id, name
 , LISTAGG(Color,' ') WITHIN GROUP (ORDER BY name) AS Colors
FROM yourtable
GROUP BY id, name
Run Code Online (Sandbox Code Playgroud)