Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan dan Menghimpunkan Berbilang Baris dalam Oracle?

Bagaimanakah Saya Boleh Menggabungkan dan Menghimpunkan Berbilang Baris dalam Oracle?

DDD
DDDasal
2025-01-04 05:45:39744semak imbas

How Can I Concatenate and Group Multiple Rows in Oracle?

Menggabungkan dan Menghimpunkan Berbilang Baris dalam Oracle

Artikel ini menangani cabaran untuk menggabungkan dan mengumpulkan berbilang baris dalam Oracle, membolehkan anda mengubah jadual dengan data bertaburan ke dalam struktur yang lebih teratur. Pertimbangkan senario berikut:

Anda mempunyai jadual yang mengandungi dua lajur, NAME dan GROUP_NAME:

NAME          GROUP_NAME
name1         groupA
name2         groupB
name5         groupC
name4         groupA
name3         groupC

Matlamat anda adalah untuk mencipta hasil dengan nama digabungkan untuk setiap nilai GROUP_NAME yang unik:

GROUP_NAME     NAMES
groupA         name1,name4
groupB         name2
groupC         name3,name5

Dalam kes ini, fungsi LISTAGG, tersedia dalam Oracle 11g dan lebih baru, menyediakan penyelesaian yang mudah:

SELECT
group_name,
LISTAGG(name, ', ')
WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP BY group_name

Walau bagaimanapun, jika anda bekerja dengan versi Oracle sebelum 11g, anda boleh menggunakan analitik untuk mencapai hasil yang sama:

select grp,
    ltrim(max(sys_connect_by_path
       (name, ',' )), ',')
        scbp
  from (select name, grp,
            row_number() over
           (partition by grp
            order by name) rn
         from tab
          )
start with rn = 1
connect by prior rn = rn-1
and prior grp = grp
  group by grp
  order by grp

Dengan memanfaatkan kedua-dua LISTAGG dan analitis, anda boleh menggabungkan dan mengumpulkan berbilang baris dengan cekap dalam Oracle, mengubah data anda menjadi perwakilan yang lebih bermakna untuk analisis dan pelaporan lanjut.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan dan Menghimpunkan 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