1

我正在尝试在 Postgres 查询中组合行并连接两列(名称、vorname)。

这很好用:

SELECT nummer, 
       array_to_string(array_agg(name|| ', ' ||vorname), '\n') as name
FROM  (
   SELECT DISTINCT
          nummer, name, vorname
   FROM   myTable
   ) AS m
GROUP  BY nummer 
ORDER  BY nummer;

不幸的是,如果“vorname”为空,尽管 name 有值,但我没有得到任何结果。

是否有可能让这个工作:

   array_to_string(array_agg(name|| ', ' ||vorname), '\n') as name

如果一列是空的?

4

2 回答 2

1

使用 coalesce 将 NULL 值转换为可以连接的值:

array_to_string(array_agg(name|| ', ' ||coalesce(vorname, '<missing>')), '\n')

此外,您可以使用 string_agg 函数直接连接字符串,而无需将它们收集到数组中。

于 2012-09-13T09:08:38.117 回答
1

如果你有 9.1,那么你可以使用 array_to_string 的第三个参数 - 空字符串

array_to_string(array_agg(name), ',', '<missing>') from bbb
于 2012-09-13T10:27:33.963 回答