Dal PostgreSQL 9,0 (uscita nel settembre 2010), v'è la funzione di aggregazione string_agg()
di fare quello che ti sembra di volere:
SELECT string_agg(field1, ';') FROM tbl GROUP BY id;
nota, che il secondo parametro è il separatore (simile ad altre funzioni aggregate).
C'è anche la funzione di stringa concat_ws()
dal PostgreSQL 9.1 , che sta facendo altrimenti lo stesso di MySQL concat_ws()
(quando non è abusato come funzione di aggregazione). È particolarmente utile gestire i valori NULL
.
SELECT concat_ws(';', field1, field2, field3) FROM tbl
Si può anche combinare sia per aggreagate più colonne nel modo desiderato.
SELECT id, string_agg(concat_ws(',', field1, field2, field3), ';') AS fields
FROM tbl
GROUP BY id;
fonte
2013-04-12 19:10:34
FYI, concat_ws saranno in PostgreSQL 9.1 : http://developer.postgresql.org/pgdocs/postgres/functions-string.html –
.. ma in Postgres 'concat_ws()' è * non * una funzione di aggregazione. Usa invece 'string_agg()'. Vedi sotto. –