最佳答案
如果我使用 array_agg
来收集名称,我会得到用逗号分隔的名称,但是如果有一个 null
值,那么这个 null 也会被作为聚合中的名称。例如:
SELECT g.id,
array_agg(CASE WHEN g.canonical = 'Y' THEN g.users ELSE NULL END) canonical_users,
array_agg(CASE WHEN g.canonical = 'N' THEN g.users ELSE NULL END) non_canonical_users
FROM groups g
GROUP BY g.id;
它返回的是 ,Larry,Phil
,而不仅仅是 Larry,Phil
(在我的9.1.2中,它显示的是 NULL,Larry,Phil
)。
相反,如果我使用 string_agg()
,它只显示名称(没有空逗号或空值)。
问题是我已经在服务器上安装了 Postgres 8.4
,而且 string_agg()
不能在那里工作