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
Lepaskan: 2025-01-05 13:32:40
asal
980 orang telah melayarinya

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;
Salin selepas log masuk

Klausa LISTAGG mengambil bentuk berikut :

LISTAGG(expression, delimiter) WITHIN GROUP (ORDER BY expression)
Salin selepas log masuk

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!

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