Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memutar Berbilang Lajur dalam Pelayan SQL Menggunakan Pernyataan PIVOT Berbilang?

Bagaimana untuk Memutar Berbilang Lajur dalam Pelayan SQL Menggunakan Pernyataan PIVOT Berbilang?

DDD
DDDasal
2025-01-03 16:55:41788semak imbas

How to Pivot Multiple Columns in SQL Server Using Multiple PIVOT Statements?

Mengasingkan Berbilang Lajur dalam Pelayan SQL

Dalam jadual pangkalan data di mana data disusun dalam baris dan lajur, kadangkala ia menjadi perlu untuk mengubah struktur jadual dengan menukar baris dengan lajur. Teknik ini dikenali sebagai pivoting.

Senario:

Anda mempunyai jadual sampel dengan lajur seperti Cawangan, Kategori, Jualan, Stok dan Sasaran. Anda ingin memutar jadual menggunakan lajur Kategori dan susun lajur yang tinggal (Jualan, Stok, Sasaran) sebagai baris. Output yang diingini harus mempunyai kategori sebagai lajur dan nilai sebagai baris.

Penyelesaian:

Untuk memutar jadual, anda boleh menggunakan berbilang pernyataan PIVOT dengan pengubahsuaian nama lajur yang sesuai:

SELECT
*
FROM
(
  SELECT 
   Branch,
   Category,
   Category+'1' As Category1,
   Category+'2' As Category2,
   Sales, 
   Stock, 
   Target
  FROM TblPivot
 ) AS P

 -- For Sales
 PIVOT
 (
   SUM(Sales) FOR Category IN ([Panel], [AC], [Ref])
 ) AS pv1

 -- For Stock
 PIVOT
 (
   SUM(Stock) FOR Category1 IN ([Panel1], [AC1], [Ref1])
 ) AS pv2

 -- For Target
 PIVOT
 (
   SUM(Target) FOR Category2 IN ([Panel2], [AC2], [Ref2])
 ) AS pv3
 GO

Dengan mengubah suai nama lajur (cth., Kategori '1' dan Kategori '2'), anda boleh memastikan bahawa penyata PIVOT berfungsi dengan betul.

Jadual perantaraan (pv1, pv2, pv3) masing-masing akan menyediakan data pangsi untuk Jualan, Stok dan Sasaran. Anda kemudiannya boleh mengagregatkan hasil pv3 kepada kumpulan dan menjumlahkan nilai seperti yang diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Memutar Berbilang Lajur dalam Pelayan SQL Menggunakan Pernyataan PIVOT Berbilang?. 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