Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggabungkan Berbilang Baris ke Baris Tunggal dalam Oracle Menggunakan LISTAGG?

Bagaimana untuk Menggabungkan Berbilang Baris ke Baris Tunggal dalam Oracle Menggunakan LISTAGG?

Barbara Streisand
Lepaskan: 2025-01-06 03:11:38
asal
622 orang telah melayarinya

How to Concatenate Multiple Rows into a Single Row in Oracle Using LISTAGG?

Menggabungkan Berbilang Baris Menjadi Satu Dalam Oracle

Untuk menggabungkan berbilang baris menjadi satu baris dalam Oracle tanpa menggunakan prosedur tersimpan, Oracle pengguna boleh menggunakan klausa LISTAGG. Klausa ini membenarkan penyatuan baris yang cekap berdasarkan pembatas yang ditentukan.

Senario Data:

Pertimbangkan data berikut:

question_id    element_id
1              7
1              8
2              9
3              10
3              11
3              12
Salin selepas log masuk

Keluaran yang Diingini:

Hasil yang diinginkan ialah gabungkan nilai element_id untuk setiap question_id, menghasilkan:

question_id    element_id
1              7,8
2              9
3              10,11,12
Salin selepas log masuk

Penyelesaian dengan LISTAGG:

Dari Oracle 11gR2 dan seterusnya, klausa LISTAGG boleh digunakan untuk mencapai ini penyambungan:

SELECT question_id,
       LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id)
FROM YOUR_TABLE
GROUP BY question_id;
Salin selepas log masuk

Pertanyaan ini menggunakan Fungsi LISTAGG untuk menggabungkan nilai element_id dalam setiap kumpulan yang ditakrifkan oleh question_id. Klausa ORDER BY memastikan nilai disusun dalam setiap kumpulan sebelum penyatuan.

Limpahan Pengendalian:

Perhatikan bahawa jika rentetan gabungan yang terhasil melebihi panjang maksimum yang dibenarkan untuk jenis data (cth., 4000 aksara untuk VARCHAR2), Oracle versi 12cR2 dan kemudiannya menyediakan pilihan untuk menangani limpahan.

SELECT question_id,
       LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id) OVERFLOW TRUNCATE/ERROR
FROM YOUR_TABLE
GROUP BY question_id;
Salin selepas log masuk

Pertanyaan ini menentukan klausa ON OVERFLOW TRUNCATE/ERROR untuk sama ada memotong atau menimbulkan ralat jika keputusan melebihi panjang maksimum.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Baris ke Baris Tunggal dalam Oracle Menggunakan LISTAGG?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan