如果我使用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()
,它只显示名称(不带空逗号或null)。
问题在于服务器上安装了Postgres 8.4
,而string_agg()
在那里无法使用。是否有办法使array_agg的工作方式类似于string_agg()?