Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memindahkan Lajur Pelayan SQL Dinamik ke Baris Menggunakan UNPIVOT?

Bagaimana untuk Memindahkan Lajur Pelayan SQL Dinamik ke Baris Menggunakan UNPIVOT?

Linda Hamilton
Linda Hamiltonasal
2024-12-05 04:39:11399semak imbas

How to Transpose Dynamic SQL Server Columns to Rows Using UNPIVOT?

Ubah Lajur Pelayan SQL Dinamik ke Baris Menggunakan UNPIVOT

Dalam Pelayan SQL, fungsi UNPIVOT membenarkan untuk menukar lajur ke dalam baris, teknik yang sering dirujuk sebagai unpivoting. Ini amat berguna apabila bekerja dengan data yang mempunyai bilangan lajur yang dinamik atau berubah-ubah.

Senario Contoh

Pertimbangkan Jadual1 berikut:

Table1
-----------------------------------------
Id       abc  brt ccc ddq eee fff gga hxx
-----------------------------------------
12345     0    1   0   5   0   2   0   0  
21321     0    0   0   0   0   0   0   0   
33333     2    0   0   0   0   0   0   0   
41414     0    0   0   0   5   0   0   1   
55001     0    0   0   0   0   0   0   2   
60000     0    0   0   0   0   0   0   0 
77777     9    0   3   0   0   0   0   0

Matlamatnya adalah untuk menyahpangsi Jadual1 ke dalam Jadual_Keputusan_Dijangka berikut, dengan mengambil kira hanya nilai yang lebih besar daripada 0:

Expected_Result_Table
---------------------
Id      Word   Qty>0
---------------------
12345    brt    1
12345    ddq    5
12345    fff    2
33333    abc    2
41414    eee    5
41414    hxx    1
55001    hxx    2
77777    abc    9
77777    ccc    3

Penyelesaian Menggunakan UNPIVOT

Fungsi UNPIVOT mengambil jadual dengan berbilang lajur dan mengubahnya menjadi jadual yang lebih luas dengan dua lajur tambahan: nilai " " lajur yang mengandungi data daripada lajur jadual asal dan lajur "nama" yang mengenal pasti sumber lajur.

SELECT Id,
       name AS Word,
       value AS Qty>0
FROM Table1
UNPIVOT (value FOR name IN (abc, brt, ccc, ddq, eee, fff, gga, hxx)) AS unpvt
WHERE value > 0;

Pertanyaan ini akan menjana hasil yang dijangkakan.

Atas ialah kandungan terperinci Bagaimana untuk Memindahkan Lajur Pelayan SQL Dinamik ke Baris Menggunakan UNPIVOT?. 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