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:
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;
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.
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') );
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:
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!