Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan Nilai Lajur daripada Berbilang Baris dalam Oracle SQL Menggunakan LISTAGG?

Bagaimanakah Saya Boleh Menggabungkan Nilai Lajur daripada Berbilang Baris dalam Oracle SQL Menggunakan LISTAGG?

Patricia Arquette
Patricia Arquetteasal
2025-01-23 15:11:12150semak imbas

How Can I Concatenate Column Values from Multiple Rows in Oracle SQL Using LISTAGG?

Oracle SQL: Menggabungkan Nilai Lajur Merentas Berbilang Baris dengan LISTAGG

Oracle menyediakan beberapa cara untuk menggabungkan data daripada berbilang baris ke dalam satu rentetan. Fungsi LISTAGG ialah kaedah yang amat berkesan.

Bayangkan anda mempunyai dua jadual: Jadual A (dengan lajur PID yang mengandungi nilai A, B, C) dan Jadual B (dengan lajur PID, SEQ dan Desc). Objektifnya adalah untuk menggabungkan nilai Desc daripada Jadual B, dikumpulkan mengikut PID dan disusun mengikut SEQ, ke dalam satu lajur Description dalam set hasil.

Berikut ialah cara untuk melakukannya menggunakan LISTAGG:

<code class="language-sql">SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description
FROM B
GROUP BY pid;</code>

Pertanyaan ini menggunakan LISTAGG untuk mengagregatkan nilai Desc bagi setiap PID unik, menyusunnya mengikut lajur SEQ dan menggunakan ruang (' ') sebagai pembatas. Output akan menunjukkan setiap PID dengan nilai Desc yang berpadanan dalam lajur description.

Untuk memasukkan hanya PIDyang hadir dalam Jadual A, cuma sertai pertanyaan ini dengan Jadual A:

<code class="language-sql">SELECT a.pid, LISTAGG(b.Desc, ' ') WITHIN GROUP (ORDER BY b.seq) AS description
FROM A a
JOIN B b ON a.pid = b.pid
GROUP BY a.pid;</code>

Pertimbangan Penting: LISTAGG biasanya berfungsi dengan betul dengan VARCHAR2 jenis data.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Nilai Lajur daripada Berbilang Baris dalam Oracle SQL Menggunakan LISTAGG?. 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