SQL在一个字段中组合不同的行结果

agu*_*muz 1 sql amazon-redshift

我正在通过SQL查询寻找一种方法,将来自同一字段但不同行的不同结果合并到一个字段中.

示例数据

 ID    TAG 
 1234   A 
 1234   B 
 1234   C
Run Code Online (Sandbox Code Playgroud)

期望的结果:

 ID     TAG 
 1234   A|B|C
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

Amazon Redshift虽然基于Postgres,但实际上支持LISTAGG()(否则是Oracle功能).这里记录在案.所以:

select id, listagg(tag, '|') within group (order by tag) as tags
from t
group by id;
Run Code Online (Sandbox Code Playgroud)