Enklere med aggregatfunktionen string_agg() (Postgres 9.0 eller nyere):
SELECT movie, string_agg(actor, ', ') AS actor_list
FROM tbl
GROUP BY 1;
1 i GROUP BY 1 er en positionsreference og en genvej til GROUP BY movie i dette tilfælde.
string_agg() forventer datatypen text som input. Andre typer skal castes eksplicit (actor::text ) - medmindre en implicit cast til text er defineret - hvilket er tilfældet for alle andre tegntyper (varchar , character , "char" ), og nogle andre typer.
Som isapir kommenterede, kan du tilføje en ORDER BY klausul i det samlede opkald for at få en sorteret liste - hvis du skulle få brug for det. Ligesom:
SELECT movie, string_agg(actor, ', ' ORDER BY actor) AS actor_list
FROM tbl
GROUP BY 1; Men det er typisk hurtigere at sortere rækker i en underforespørgsel. Se:
- Postgres SQL - Opret array i Select