Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan Berbilang Baris ke Baris Tunggal dalam Oracle Tanpa Prosedur Tersimpan?
Menggabungkan Berbilang Baris ke dalam Baris Tunggal dalam Oracle Tanpa Prosedur Tersimpan
Isu yang dihadapi mencari kaedah dalam Oracle untuk menggabungkan berbilang baris ke dalam satu tanpa menggunakan prosedur tersimpan. Set data yang diberikan terdiri daripada lajur question_id dan element_id dengan nilai question_id pendua. Hasil yang diinginkan adalah untuk menggabungkan nilai element_id yang dikaitkan dengan question_id yang sama ke dalam satu baris.
Mencapai ini boleh dicapai menggunakan klausa LISTAGG, yang diperkenalkan dalam Oracle 11gR2. Berikut ialah sintaksnya:
SELECT question_id, LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id) FROM YOUR_TABLE GROUP BY question_id;
Klausa ini menggabungkan nilai element_id untuk setiap question_id, dipisahkan oleh pembatas yang ditentukan (koma dalam kes ini). Ambil perhatian bahawa klausa WITHIN GROUP memastikan bahawa nilai disusun sebelum penyatuan.
Untuk versi Oracle 12cR2 dan kemudian, klausa ON OVERFLOW TRUNCATE/ERROR boleh digunakan untuk mengendalikan isu yang berpotensi dengan had panjang rentetan:
SELECT question_id, LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id) ON OVERFLOW TRUNCATE FROM YOUR_TABLE GROUP BY question_id;
atau
SELECT question_id, LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id) ON OVERFLOW ERROR FROM YOUR_TABLE GROUP BY question_id;
Oleh mematuhi sintaks dan menggunakan pilihan yang sesuai, pembangun boleh menggabungkan berbilang baris ke dalam satu baris tanpa membuat prosedur tersimpan dalam Oracle.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Baris ke Baris Tunggal dalam Oracle Tanpa Prosedur Tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!