将多行的选定列合并为一个字符串

Combine selected columns of multiple rows into one string

假设我有以下 table:

table xyz

+------+--------+--------+
| id   | field1 | field2 |
+------+--------+--------+
|    3 | ABC    | 123    |
|    4 | GHI    | 432    |
|    5 | NULL   | 444    |
+------+--------+--------+

要连接选定的列(field1 和 field2),我可以使用以下查询:

select coalesce(field1, '') || ' ' || coalesce(field2::text, '') from xyz;

结果如下:

ABC 123
GHI 432
222

如何将所有结果行合并为一行?我想实现以下目标

ABC 123, GHI 432, 444

SQL Fiddle

你可以使用 array_agg

SELECT array_agg(coalesce(field1, '') || ' ' || coalesce(field2::text, '') )
FROM xyz

http://sqlfiddle.com/#!17/535f6/7