Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan Berbilang Baris dengan Cekap menjadi Baris Tunggal dalam Oracle SQL?

Bagaimanakah Saya Boleh Menggabungkan Berbilang Baris dengan Cekap menjadi Baris Tunggal dalam Oracle SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-05 13:32:40984semak imbas

How Can I Efficiently Concatenate Multiple Rows into a Single Row in Oracle SQL?

Manipulasi Data dalam Oracle: Menggabungkan Berbilang Baris Menjadi Satu

Dalam Oracle, menggabungkan berbilang baris dengan cekap ke dalam satu baris selalunya merupakan operasi yang diingini. Soalan ini menyelidiki senario tertentu di mana jadual mengandungi data dalam format berikut:

question_id element_id
1 7
1 8
2 9
3 10
3 11
3 12

Objektifnya adalah untuk mengubah data ini kepada hasil yang diingini berikut:

question_id element_id
1 7,8
2 9
3 10,11,12

Untuk mencapai tugas ini dengan berkesan tanpa menggunakan prosedur tersimpan, Oracle 11gR2 memperkenalkan klausa LISTAGG. Klausa yang luar biasa ini membenarkan operasi penggabungan sedemikian dilakukan secara terus dalam satu pernyataan SQL.

Begini cara untuk melaksanakannya dalam pertanyaan Oracle anda:

SELECT question_id,
       LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id)
FROM YOUR_TABLE
GROUP BY question_id;

Klausa LISTAGG mengambil bentuk berikut :

LISTAGG(expression, delimiter) WITHIN GROUP (ORDER BY expression)

Dalam kes ini, kami menentukan lajur "id_elemen" sebagai ungkapan dan "," sebagai pembatas untuk memisahkan nilai yang digabungkan. Klausa WITHIN GROUP memastikan bahawa penggabungan dilakukan dalam setiap kumpulan, yang ditakrifkan oleh lajur "id_soalan".

Perlu diperhatikan bahawa rentetan gabungan yang terhasil mungkin melebihi had panjang maksimum untuk jenis data VARCHAR2 ( 4000 aksara). Untuk menangani isu yang berpotensi ini, Oracle 12cR2 memperkenalkan pilihan ON OVERFLOW TRUNCATE/ERROR. Dengan memasukkan pilihan ini, anda boleh menentukan sama ada untuk memotong rentetan atau menimbulkan ralat jika melebihi had panjang.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Berbilang Baris dengan Cekap menjadi Baris Tunggal dalam Oracle SQL?. 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