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

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

DDD
DDDasal
2025-01-23 15:06:09572semak imbas

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

Menggabungkan Nilai Lajur daripada Berbilang Baris dalam Oracle: Penyelesaian Komprehensif

Oracle menyediakan keupayaan teguh untuk manipulasi data, termasuk keupayaan untuk menggabungkan lajur nilai daripada berbilang baris. Pertimbangkan contoh berikut, di mana kami menyasarkan untuk menggabungkan nilai "Desc" daripada jadual B untuk setiap nilai "PID" unik dalam jadual A.

Table A:

PID
A
B
C

Table B:

PID   SEQ    Desc
A     1      Have
A     2      a nice
A     3      day.
B     1      Nice Work.
C     1      Yes
C     2      we can
C     3      do
C     4      this work!

Untuk mencapai output yang diingini, di mana lajur "Desc" dalam jadual output ialah gabungan nilai "Desc" daripada jadual B untuk setiap "PID", kita boleh menggunakan pertanyaan SQL berikut:

SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description
FROM B GROUP BY pid;

Ini pertanyaan memanfaatkan fungsi LISTAGG, yang mengagregatkan nilai daripada lajur tertentu ke dalam satu rentetan. Dengan menggunakan klausa GROUP BY, kami memastikan bahawa nilai dikumpulkan mengikut lajur "PID". Klausa ORDER BY selanjutnya menentukan tertib di mana nilai digabungkan (dalam kes ini, mengikut lajur "SEQ").

Untuk melengkapkan proses, kita boleh menyertai output pertanyaan ini dengan jadual A hingga tapis nilai "PID" seperti yang diperlukan:

SELECT A.PID, description
FROM A
INNER JOIN (
    SELECT pid, LISTAGG(Desc, ' ') WITHIN GROUP (ORDER BY seq) AS description
    FROM B GROUP BY pid
) AS B ON A.PID = B.pid;

Output yang terhasil akan menyerupai berikut:

PID   Desc
A     Have a nice day.
B     Nice Work.
C     Yes we can do this work!

Dengan pendekatan ini, kami menggabungkan nilai lajur secara berkesan daripada berbilang baris dalam Oracle, menyediakan alat yang berkuasa untuk transformasi dan manipulasi data.

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