我有一个数据集,该数据集可以具有相同的索赔编号的多行。和不同的名称:
claim_id name
112 John Smith
112 Tom Harris
113 Randy Dugar
如果索赔ID相同,那么我需要将所有名称都放在一行中,并用逗号隔开:
claim_no name
112 John Smith, Tom Harris
113 Randy Dugar
我在T-SQL中创建了类似的东西,但是对Postgres来说是新的。我已经尝试过类似以下的操作,但是却出现错误:
with firstrun as(
select distinct kia.claim_id as claim_id, c.first_name ||' '
||c.last_name as name
from kia
inner join
claims c
on kia.claim_id = c.claim_id
)
select distinct claim_id, substring((Select ',' || ' '|| fr.name as text()]
from firstrun fr
for xml path('')), 2, 500)
答案 0 :(得分:3)
string_agg
聚合函数将为您完成所有繁重的工作:
SELECT claim_id, STRING_AGG(name, ', ')
FROM claims
GROUP BY claim_id