Rumah >pangkalan data >tutorial mysql >Bolehkah Oracle SQL Mengagregatkan Berbilang Baris menjadi Baris Tunggal?
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!