【问题标题】:Combine multiple values into one cell in Postgres在 Postgres 中将多个值合并到一个单元格中
【发布时间】:2018-09-27 20:34:32
【问题描述】:

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

   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)

【问题讨论】:

  • 提示:string_agg().

标签: sql postgresql select string-concatenation


【解决方案1】:

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

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

【讨论】:

  • 这很棒。以前从未听说过该功能,而且效果很好。
猜你喜欢
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
  • 2014-10-31
相关资源
最近更新 更多