将多行的选定列合并为一个字符串
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
你可以使用 array_agg
SELECT array_agg(coalesce(field1, '') || ' ' || coalesce(field2::text, '') )
FROM xyz
假设我有以下 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
你可以使用 array_agg
SELECT array_agg(coalesce(field1, '') || ' ' || coalesce(field2::text, '') )
FROM xyz