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
Lepaskan: 2025-01-15 18:42:43
asal
703 orang telah melayarinya

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>
Salin selepas log masuk

Untuk mencapai hasil yang dijangkakan berikut:

<code>A 1 2
B 1 2</code>
Salin selepas log masuk

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.

SELECT field1, WM_CONCAT(field2)
FROM YourTable
GROUP BY field2;
Salin selepas log masuk

Fungsi LISTAGG

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

SELECT field1, LISTAGG(field2, ',') WITHIN GROUP (ORDER BY field2)
FROM YourTable
GROUP BY field1;
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan