Gabungkan dan Kumpulan Berbilang Baris dalam Oracle
Dalam senario di mana anda mempunyai jadual dengan berbilang baris yang memerlukan penggabungan dan pengumpulan, penggunaan fungsi LISTAGG dalam Oracle 11g menyediakan yang mudah penyelesaian:
SELECT group_name, LISTAGG(name, ', ') WITHIN GROUP (ORDER BY GROUP) AS "names" FROM name_table GROUP BY group_name
Fungsi LISTAGG mengagregatkan berbilang nilai daripada sekumpulan baris, memisahkannya dengan pembatas yang ditentukan (di sini, ','). Ia memudahkan proses penggabungan dan pengumpulan, menghasilkan hasil yang diingini.
Untuk pangkalan data sebelum Oracle 11g, pendekatan alternatif menggunakan analitik tersedia:
SELECT grp, ltrim(max(sys_connect_by_path(name, ',' )), ',') AS scbp FROM ( SELECT name, grp, row_number() OVER (PARTITION BY grp ORDER BY name) AS rn FROM tab ) START WITH rn = 1 CONNECT BY PRIOR rn = rn - 1 AND PRIOR grp = grp GROUP BY grp ORDER BY grp
Pertanyaan ini memanfaatkan CONNECT BY klausa dan row_number() fungsi analitik untuk menggabungkan dan mengumpulkan nilai secara berulang, menghasilkan output yang sama seperti Kaedah LITAGG.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan dan Menghimpunkan Berbilang Baris dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!