Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memutar Baris ke Lajur dalam Oracle: DECODE lwn. PIVOT?

Bagaimana untuk Memutar Baris ke Lajur dalam Oracle: DECODE lwn. PIVOT?

Mary-Kate Olsen
Lepaskan: 2025-01-03 01:09:39
asal
854 orang telah melayarinya

How to Pivot Rows to Columns in Oracle: DECODE vs. PIVOT?

Cara Mengubah Data daripada Baris kepada Lajur dalam Oracle: Penyelesaian Pangsi

Pangkalan data Oracle menawarkan teknik serba boleh untuk menstruktur semula data daripada baris kepada lajur, satu proses yang dikenali sebagai pivoting. Transformasi ini menjadi perlu apabila data disusun dalam format yang sempit dan anda perlu membentangkannya dalam paparan yang lebih luas.

Untuk mencapai penukaran baris ke lajur, Oracle menyediakan dua kaedah:

Fungsi DECODE dalam Oracle 10g

Dalam versi terdahulu Oracle (10g), anda boleh mencapai pangsi menggunakan fungsi DECODE. Pertimbangkan struktur jadual berikut:

LOAN NUMBER DOCUMENT_TYPE DOCUMENT_ID
992452533663 Voters ID XPD0355636
992452533663 Pan card CHXPS5522D
992452533663 Drivers licence DL-0420110141769

Untuk memutar data ini, anda boleh menggunakan fungsi DECODE seperti berikut:

SELECT
    loan_number,
    MAX(DECODE(document_type, 'Voters ID', document_id)) AS voters_id,
    MAX(DECODE(document_type, 'Pan card', document_id)) AS pan_card,
    MAX(DECODE(document_type, 'Drivers licence', document_id)) AS drivers_licence
  FROM
    doc_tab
GROUP BY loan_number
ORDER BY loan_number;
Salin selepas log masuk

Pertanyaan ini mengumpulkan data mengikut nombor pinjaman dan menggunakan DECODE bersarang berfungsi untuk memberikan ID dokumen kepada jenis dokumen tertentu. Fungsi MAX mengembalikan nilai tunggal yang diingini untuk setiap kombinasi pinjaman-dokumen.

Klausa PIVOT dalam Oracle 11g dan Kemudian

Oracle 11g memperkenalkan klausa PIVOT khusus untuk memudahkan transformasi baris ke lajur. Pertanyaan berikut menunjukkan penggunaannya:

SELECT *
  FROM doc_tab
PIVOT (
  MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence')
);
Salin selepas log masuk

Klausa PIVOT dalam pertanyaan ini secara eksplisit mentakrifkan lajur yang akan dibuat dalam hasil yang diubah. Ia mengumpulkan data secara automatik berdasarkan jenis dokumen yang ditentukan dan menggabungkan ID dokumen yang sepadan.

Untuk mendapatkan maklumat lanjut tentang teknik pivoting dalam Oracle, rujuk sumber di bawah:

  • [Tim Artikel Hall tentang Pivoting in Oracle](https://www.oracle.com/technetwork/database/oracle-magazine/oracle-11g-pivot-127859.html)
  • [Contoh SQLiddle membandingkan kedua-dua penyelesaian](https://www .sqlfiddle.com/#!5/7956/2/0)

Atas ialah kandungan terperinci Bagaimana untuk Memutar Baris ke Lajur dalam Oracle: DECODE lwn. PIVOT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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