Menyingkap Rahsia PIVOT dalam SQL Server
Selalunya, kami menghadapi set data di mana data distrukturkan dengan cara yang menjadikannya mencabar untuk menganalisis dan mempersembahkan dalam format yang bermakna. Satu senario sedemikian timbul apabila data disusun ke dalam berbilang lajur, setiap satu mewakili nilai yang berbeza untuk kategori tertentu. Untuk mengubah set data ini menjadi jadual dengan kategori sebagai lajur dan nilai sebagai baris, kami boleh menggunakan operator PIVOT dalam SQL Server.
Mari kita pertimbangkan senario di mana kita mempunyai jadual bernama "mytable" dengan lajur "Name1" , "Nama2", dan "Nilai". Data dalam jadual ini mewakili pelbagai nilai ("P1", "P2", "P3", "P4") yang dikaitkan dengan nama berbeza ("A" dan "B"):
Name1 Name2 Value A P1 1 A P2 1 A P3 2 B P1 3 B P2 1 B P4 1
Matlamat kami adalah untuk menstruktur semula data ini ke dalam format berikut:
A B P1 1 4 P2 1 1 P3 2 NULL P4 NULL 1
Dalam SQL Server 2005, kami boleh memanfaatkan pembinaan pertanyaan dinamik untuk mencapai transformasi ini menggunakan PIVOT. Berikut ialah panduan langkah demi langkah:
Kumpul Rentetan Nama Lajur yang Dipisahkan Koma: Jalankan pertanyaan berikut untuk mencipta rentetan yang mengandungi semua "Name1" yang berbeza " nilai dipisahkan oleh koma:
DECLARE @cols VARCHAR(1000) SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName([Name1]) FROM myTable FOR XML PATH('') ), 1, 1, '')
Bina Pertanyaan SQL Dinamik: Cipta pembolehubah bernama @sqlquery dan tetapkan templat pertanyaan berikut:
DECLARE @sqlquery VARCHAR(2000) SET @sqlquery = 'SELECT * FROM (SELECT Name2, Name1, Value FROM myTable ) base PIVOT (Sum(Value) FOR [Name1] IN (' + @cols + ')) AS finalpivot'
Pendekatan ini membina klausa PIVOT secara dinamik berdasarkan nilai yang berbeza dalam lajur "Name1". Fungsi PIVOT menjumlahkan lajur "Nilai" untuk setiap kategori "Nama1", dan hasilnya ialah jadual di mana nilai "Nama2" berfungsi sebagai tajuk baris dan kategori "Nama1" membentuk tajuk lajur.
Sebagai umum peraturan, PIVOT boleh digunakan apabila anda perlu mengubah data daripada struktur berorientasikan lajur kepada struktur berorientasikan baris. Teknik ini boleh memudahkan analisis data dan tugasan pembentangan dengan ketara.
Atas ialah kandungan terperinci Bagaimanakah pengendali PIVOT SQL Server boleh membentuk semula data daripada berbilang lajur ke dalam format berorientasikan baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!