Si utilizo array_agg
para recopilar nombres, obtengo mis nombres separados por comas, pero en caso de que haya un null
valor, ese nulo también se toma como un nombre en el agregado. Por ejemplo :
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;
devuelve en ,Larry,Phil
lugar de solo Larry,Phil
(en mi 9.1.2, se muestra NULL,Larry,Phil
). como en este violín
En cambio, si lo uso string_agg()
, me muestra solo los nombres (sin comas vacías o nulos) como aquí
El problema es que lo he Postgres 8.4
instalado en el servidor y string_agg()
no funciona allí. ¿Hay alguna forma de hacer que array_agg funcione de manera similar a string_agg ()?