Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengagregatkan Berbilang Baris ke Baris Tunggal dalam Oracle SQL?

Bagaimana untuk Mengagregatkan Berbilang Baris ke Baris Tunggal dalam Oracle SQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-15 18:42:43644semak imbas

How to Aggregate Multiple Rows into a Single Row in Oracle SQL?

Oracle SQL menggabungkan berbilang baris menjadi satu baris

Dalam pangkalan data Oracle, anda mungkin perlu menggabungkan berbilang baris dalam jadual menjadi satu baris, mencipta struktur jadual dengan berbilang lajur. Katakan terdapat jadual dengan skema berikut:

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

Untuk mencapai hasil yang dijangkakan berikut:

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

Oracle menyediakan fungsi SQL khusus untuk memenuhi keperluan ini:

Fungsi WM_CONCAT (ditamatkan)

Amaran: Fungsi WM_CONCAT kini ditamatkan dan telah dialih keluar dalam Oracle 12c dan lebih baru. Menggunakannya dalam versi yang lebih baru boleh menyebabkan hasil yang tidak dapat diramalkan.

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

Fungsi LISTAGG

Untuk versi Oracle yang lebih baharu, disyorkan untuk menggunakan fungsi LISTAGG:

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

Penggabungan tersuai

Jika fungsi WM_CONCAT mahupun LISTAGG tidak tersedia dalam versi Oracle anda, anda boleh melaksanakan pengagregatan tersuai dengan mengikuti langkah berikut:

  1. Buat jadual sementara untuk menyimpan data agregat.
  2. Masukkan data yang diperlukan ke dalam jadual sementara menggunakan gelung atau rekursi.
  3. Dapatkan semula data agregat daripada jadual sementara.

Sila ambil perhatian bahawa pengagregatan tersuai mungkin lebih kompleks dan intensif pengiraan daripada menggunakan fungsi yang dipratentukan.

Atas ialah kandungan terperinci Bagaimana untuk Mengagregatkan Berbilang Baris ke Baris Tunggal dalam Oracle SQL?. 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