
Menggabungkan Berbilang Baris menjadi Baris Tunggal dalam Oracle Tanpa Prosedur Tersimpan
Apabila bekerja dengan data dalam Oracle, mungkin terdapat keadaan di mana anda perlu menggabungkan berbilang baris menjadi satu baris. Secara tradisinya, ini boleh dicapai menggunakan prosedur tersimpan. Walau bagaimanapun, terdapat penyelesaian yang lebih cekap dan mudah menggunakan klausa LISTAGG Oracle.
Klausa LISTAGG dalam Oracle
Diperkenalkan dalam Oracle 11gR2, klausa LISTAGG membenarkan anda untuk menggabungkan berbilang nilai ke dalam satu rentetan. Ia memerlukan sintaks berikut:
LISTAGG(expression, delimiter) WITHIN GROUP (ORDER BY column)
Contoh
Pertimbangkan set data berikut:
| question_id | element_id |
|---|---|
| 1 | 7 |
| 1 | 8 |
| 2 | 9 |
| 3 | 10 |
| 3 | 11 |
| 3 | 12 |
Untuk menggabungkan nilai element_id bagi setiap question_id ke dalam satu baris, kita boleh menggunakan pertanyaan berikut:
SELECT question_id,
LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id)
FROM your_table
GROUP BY question_id;Output
| question_id | element_id |
|---|---|
| 1 | 7,8 |
| 2 | 9 |
| 3 | 10,11,12 |
Pertimbangan untuk Rentetan Hasil Besar
Jika rentetan yang terhasil dijangka melebihi 4000 aksara (panjang maksimum untuk jenis data VARCHAR2), anda boleh menggunakan peningkatan berikut yang diperkenalkan dalam Oracle 12cR2:
SELECT question_id,
LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id) ON OVERFLOW TRUNCATE/ERROR
FROM your_table
GROUP BY question_id;Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Berbilang Baris ke Baris Tunggal dalam Oracle Tanpa Menggunakan Prosedur Tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Penyelesaian kepada Google Chrome tidak berfungsi
Perbezaan antara fail pengepala dan fail sumber
langkah perlindungan keselamatan pelayan cdn
Pengenalan kepada lokasi panel kawalan win10
mata wang digital maya
penggunaan fungsi sorting
Ringkasan pengetahuan asas java
Bagaimana untuk memadam direktori dalam LINUX