Объедините несколько значений в одну ячейку в Postgres - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть набор данных, который может содержать несколько строк с одним и тем же утверждением.и разные имена:

   claim_id           name
    112               John Smith
    112               Tom Harris
    113               Randy Dugar

Если идентификатор заявки совпадает, то мне нужно, чтобы все имена были в одной строке, разделенные запятой:

    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 голосов
/ 27 сентября 2018

Функция агрегата string_agg сделает всю тяжелую работу за вас:

SELECT   claim_id, STRING_AGG(name, ', ')
FROM     claims
GROUP BY claim_id
...