最佳答案
如果我使用 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()不能在那里工作