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 PID
yang 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!