Menggunakan PIVOT untuk Mengubah Data dalam SQL Server
Operasi SQL Server PIVOT membolehkan anda mengubah data daripada format lebar kepada format tinggi , menjadikannya lebih mudah untuk meringkaskan dan menganalisis data. Ini amat berguna dalam senario di mana anda ingin menukar data yang disusun dalam baris dan lajur kepada format yang setiap lajur mewakili atribut tertentu dan setiap baris mewakili nilai tertentu untuk atribut tersebut.
Senario contoh ialah transformasi daripada set data berikut, yang mempunyai data dalam format yang luas:
Name1 | Name2 | Value -------|-------|------- A | P1 | 1 A | P2 | 1 A | P3 | 2 B | P1 | 3 B | P2 | 1 B | P4 | 1
Ke dalam yang berikut format:
A B P1 1 4 P2 1 1 P3 2 NULL P4 NULL 1
Untuk mencapai transformasi ini dalam SQL Server 2005, kod berikut boleh digunakan:
DECLARE @cols VARCHAR(1000) DECLARE @sqlquery VARCHAR(2000) SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName([Name1]) FROM myTable FOR XML PATH('') ), 1, 1, '') SET @sqlquery = 'SELECT * FROM (SELECT Name2, Name1, Value FROM myTable ) base PIVOT (Sum(Value) FOR [Name1] IN (' + @cols + ')) AS finalpivot' EXECUTE ( @sqlquery )
Kod ini secara dinamik memasang pertanyaan PIVOT berdasarkan nilai unik dalam Nama1 lajur. Ia mula-mula menggabungkan nilai Name1 yang berbeza ke dalam senarai dipisahkan koma, yang kemudiannya digunakan dalam pernyataan PIVOT untuk mencipta lajur baharu. Fungsi agregat SUM() mengira jumlah nilai untuk setiap atribut (Nama1) dalam setiap baris (Nama2).
Hasilnya ialah set data yang diubah dengan format tinggi yang diingini, di mana setiap lajur mewakili atribut Name1 dan setiap satu. baris mengandungi nilai jumlah yang sepadan untuk atribut itu. Format ini memudahkan analisis dan rumusan data dengan menyediakan paparan data yang lebih ringkas dan teratur.
Atas ialah kandungan terperinci Bagaimanakah Fungsi PIVOT SQL Server Boleh Mengubah Data Luas kepada Format Yang Lebih Boleh Dianalisis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!