Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan dan Menghimpunkan Berbilang Baris dalam Oracle?

Bagaimana untuk Menggabungkan dan Menghimpunkan Berbilang Baris dalam Oracle?

Susan Sarandon
Susan Sarandonasal
2025-01-04 02:56:39562semak imbas

How to Concatenate and Group Multiple Rows in Oracle?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn