Rumah >pangkalan data >tutorial mysql >Bolehkah Oracle SQL Mengagregatkan Berbilang Baris menjadi Baris Tunggal?

Bolehkah Oracle SQL Mengagregatkan Berbilang Baris menjadi Baris Tunggal?

Patricia Arquette
Patricia Arquetteasal
2025-01-15 18:47:47887semak imbas

Can Oracle SQL Aggregate Multiple Rows into a Single Row?

Oracle SQL: Gabungkan berbilang baris data menjadi satu baris

Soalan:

Bolehkah Oracle SQL menggabungkan berbilang baris data dalam jadual menjadi satu baris?

Arahan:

Andaikan terdapat jadual dengan struktur berikut:

<code>A 1
A 2
B 1
B 2</code>

Matlamatnya adalah untuk mendapatkan set keputusan berikut:

<code>A 1 2
B 1 2</code>

Penyelesaian:

Bergantung pada versi Oracle SQL yang anda gunakan, anda boleh menggunakan kaedah berikut:

1. Fungsi wm_concat() (Oracle 12c dan ke bawah):

<code class="language-sql">SELECT field1, wm_concat(field2)
FROM YourTable
GROUP BY field1;</code>

(Nota: Fungsi wm_concat() ditamatkan dalam Oracle 12c. Sebaliknya disyorkan untuk menggunakan LISTAGG.)

2. Pengagregatan rentetan tersuai:

Jika fungsi wm_concat() tidak tersedia, anda boleh melaksanakan kaedah tersuai untuk melakukan pengagregatan rentetan. Sila lawati oracle-base.com untuk mendapatkan arahan terperinci.

3. Gunakan fungsi LISTAGG (Oracle 11gR2 dan ke atas):

Ini ialah pendekatan moden yang disyorkan kerana ia lebih mantap dan disokong dalam versi Oracle yang lebih baharu.

<code class="language-sql">SELECT field1, LISTAGG(field2, ' ') WITHIN GROUP (ORDER BY field2) AS aggregated_field2
FROM YourTable
GROUP BY field1;</code>

Pertanyaan ini menggunakan fungsi LISTAGG untuk menggabungkan nilai dalam field2 ke dalam rentetan, menggunakan ruang sebagai pembatas dan mengisih mengikut nilai field2. Klausa WITHIN GROUP (ORDER BY field2) memastikan susunan nilai dalam rentetan yang terhasil. Klausa GROUP BY field1 dihimpunkan mengikut nilai field1, dengan itu menggabungkan berbilang baris menjadi satu baris.

Pilih penyelesaian yang paling sesuai dengan versi Oracle anda. Untuk Oracle 11gR2 dan ke atas, amat disyorkan untuk menggunakan fungsi LISTAGG.

Atas ialah kandungan terperinci Bolehkah Oracle SQL Mengagregatkan Berbilang Baris menjadi Baris Tunggal?. 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