Rumah >pangkalan data >Oracle >oracle menukar lajur kepada berbilang lajur

oracle menukar lajur kepada berbilang lajur

WBOY
WBOYasal
2023-05-13 16:17:381093semak imbas

Menukar satu lajur data kepada berbilang lajur data ialah keperluan biasa dalam Oracle. Sebagai contoh, katakan anda mempunyai jadual yang mengandungi produk, tarikh jualan dan kuantiti jualan. Anda ingin menukar ini kepada jualan bulanan untuk setiap produk. Cara paling mudah untuk mencapai ini ialah menggunakan operasi PIVOT.

Berikut ialah contoh jadual:

PRODUCT   SALE_DATE   SALE_QUANTITY
-------------------------------------
A         2021-01-01  100
A         2021-01-15  200
A         2021-02-01  300
B         2021-01-01  150
B         2021-03-01  250

Kami mahu menukarnya ke dalam format berikut:

PRODUCT   JAN_SALE  FEB_SALE  MAR_SALE
-------------------------------------
A         300       300       0
B         150       0         250

Untuk mencapai operasi ini menggunakan PIVOT, anda boleh menggunakan SQL berikut :

SELECT PRODUCT, 
       NVL(JAN_SALE, 0) AS JAN_SALE,
       NVL(FEB_SALE, 0) AS FEB_SALE,
       NVL(MAR_SALE, 0) AS MAR_SALE
FROM 
  (SELECT PRODUCT, 
          TO_CHAR(SALE_DATE, 'MON') AS SALE_MONTH, 
          SALE_QUANTITY
   FROM   SALES_TABLE)
PIVOT 
  (SUM(SALE_QUANTITY)
   FOR SALE_MONTH IN ('JAN' AS JAN_SALE, 'FEB' AS FEB_SALE, 'MAR' AS MAR_SALE))

Dalam SQL di atas, kami mula-mula menukar jadual asal kepada hasil perantaraan dengan lajur BULAN. Kami menggunakan fungsi TO_CHAR untuk menukar SALE_DATE kepada rentetan bulan pendek. Kami kemudian menggunakan operator PIVOT untuk menukar kuantiti jualan setiap bulan kepada lajur. Sintaks PIVOT sangat ringkas, anda hanya perlu menentukan lajur dan nilai yang hendak ditukar dan nama lajur baharu.

Dalam contoh di atas, kami menggunakan fungsi NVL untuk memastikan hasilnya merangkumi semua produk, walaupun tiada jualan dalam sebulan. Jika fungsi NVL tidak digunakan, hasil pertanyaan hanya boleh memaparkan produk dan bulan dengan jualan.

Operasi PIVOT bukan sahaja sesuai untuk menukar lajur kepada berbilang lajur, tetapi juga boleh menukar baris kepada berbilang baris menggunakan sintaks yang serupa. Sebagai contoh, katakan anda mempunyai jadual dengan wilayah, produk dan kuantiti jualan. Anda ingin menukar ini kepada jumlah jualan bagi setiap produk dan wilayah. Menggunakan operasi PIVOT anda boleh mencapai matlamat ini dengan mudah.

Ringkasnya, operasi PIVOT ialah alat yang sangat berguna dan mudah dalam Oracle SQL, yang boleh menukar lajur kepada berbilang lajur atau baris kepada berbilang baris dengan cepat. Fleksibiliti dan sifatnya yang boleh disesuaikan menjadikannya berguna dalam banyak situasi.

Atas ialah kandungan terperinci oracle menukar lajur kepada berbilang lajur. 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