PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

como fazer array_agg() funcionar como group_concat() do mySQL


No PostgreSQL 8.4 você não pode ordenar explicitamente array_agg mas você pode contornar isso ordenando as linhas passadas para o grupo/agregado com uma subconsulta:
SELECT id, array_to_string(array_agg(image), ',')
FROM (SELECT * FROM test ORDER BY id, rank) x
GROUP BY id;

No PostgreSQL 9.0, as expressões agregadas podem ter um ORDER BY cláusula:
SELECT id, array_to_string(array_agg(image ORDER BY rank), ',')
FROM test
GROUP BY id;