我在PostgreSQL中有一个表,如下所示:
ID NAME
450 China
525 Germany
658 Austria
我想查询I d500的每个名称,并使用
array_to_string(array_agg(NAME), ', ').
我需要以下结果:
column1 (ID < 500) column2 (ID > 500)
China Germany, Austria
最佳答案
尝试使用条件聚合:
SELECT
STRING_AGG(CASE WHEN ID < 500 THEN NAME END, ', ') AS ID_lt_500,
STRING_AGG(CASE WHEN ID >= 500 THEN NAME END, ', ') AS ID_gt_500
FROM yourTable;
Demo
编辑:
如果您使用的Postgres版本不支持
STRING_AGG
,请按照您已经做的操作:SELECT
ARRAY_TO_STRING(ARRAY_AGG(CASE WHEN ID < 500 THEN NAME END), ', ') AS ID_lt_500,
ARRAY_TO_STRING(ARRAY_AGG(CASE WHEN ID >= 500 THEN NAME END), ', ') AS ID_gt_500
FROM yourTable;
Demo
关于postgresql - 从两列中的同一列中检索数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54111755/