在Postgres中将多个值合并到一个单元格中

时间:2018-09-27 20:34:32

标签: sql postgresql select string-concatenation

我有一个数据集,该数据集可以具有相同的索赔编号的多行。和不同的名称:

   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)

1 个答案:

答案 0 :(得分:3)

string_agg聚合函数将为您完成所有繁重的工作:

SELECT   claim_id, STRING_AGG(name, ', ')
FROM     claims
GROUP BY claim_id
相关问题