Nếu tôi sử dụng array_aggđể thu thập tên, tôi sẽ đặt tên của mình được phân tách bằng dấu phẩy, nhưng trong trường hợp có nullgiá trị, giá trị rỗng đó cũng được lấy làm tên trong tổng hợp. Ví dụ :
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;
nó trả về ,Larry,Philthay vì chỉ Larry,Phil(trong 9.1.2 của tôi, nó hiển thị NULL,Larry,Phil). như trong này fiddle
Thay vào đó, nếu tôi sử dụng string_agg(), nó chỉ hiển thị cho tôi các tên (không có dấu phẩy hoặc dấu trống) như ở đây
Vấn đề là tôi đã Postgres 8.4cài đặt trên máy chủ, và string_agg()không hoạt động ở đó. Có cách nào để làm cho array_agg hoạt động tương tự như string_agg () không?