PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Gabungkan beberapa baris hasil dari satu kolom menjadi satu, kelompokkan dengan kolom lain

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengonfigurasi Replikasi Cluster-to-Cluster untuk PostgreSQL

  2. Apa yang dimaksud dengan Kesalahan Impor:Simbol tidak ditemukan:_PQencryptPasswordConn dan bagaimana cara memperbaikinya?

  3. PostgreSQL JDBC Null String diambil sebagai byte

  4. Bagaimana Lantai() Bekerja di PostgreSQL

  5. konversi format geometri Postgres ke WKT