Lebih sederhana dengan fungsi agregat string_agg() (Postgres 9.0 atau lebih baru):
SELECT movie, string_agg(actor, ', ') AS actor_list
FROM tbl
GROUP BY 1;
1 di GROUP BY 1 adalah referensi posisi dan jalan pintas untuk GROUP BY movie dalam hal ini.
string_agg() mengharapkan tipe data text sebagai masukan. Jenis lain perlu ditransmisikan secara eksplisit (actor::text ) - kecuali pemeran implisit ke text didefinisikan - yang merupakan kasus untuk semua tipe karakter lainnya (varchar , character , "char" ), dan beberapa jenis lainnya.
Seperti yang dikomentari isapir, Anda dapat menambahkan ORDER BY klausa dalam panggilan agregat untuk mendapatkan daftar yang diurutkan - jika Anda membutuhkannya. Seperti:
SELECT movie, string_agg(actor, ', ' ORDER BY actor) AS actor_list
FROM tbl
GROUP BY 1; Tapi biasanya lebih cepat untuk mengurutkan baris dalam subquery. Lihat:
- Postgres SQL - Buat Array di Select