PIVOT Pelayan SQL Dinamik untuk Lajur Dinamik
Anda mempunyai set data dengan berbilang lajur ('Name1' dan 'Name2') dan nilai lajur ('Nilai'). Anda ingin menukar data ini kepada format terpivot yang mana 'Name1' menjadi pengepala lajur dan nilainya diagregatkan oleh 'Name2'.
Penyelesaian dengan Dynamic SQL (SQL Server 2005 atau Kemudian)
Memandangkan SQL Server 2005 membenarkan SQL dinamik, anda boleh menyelesaikan masalah ini dengan memasang pertanyaan PIVOT secara dinamik. Berikut ialah kodnya:
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 )
Pertanyaan ini akan berfungsi secara dinamik tidak kira berapa banyak nilai unik 'Name1' yang anda ada. Ia memberikan nilai 'Name1' yang dikumpul kepada pembolehubah @cols, yang kemudiannya digunakan untuk membina klausa PIVOT secara dinamik dalam pembolehubah @sqlquery. Pertanyaan terakhir kemudiannya dilaksanakan, menghasilkan output yang anda inginkan.
Sumber Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Data Secara Dinamik dalam SQL Server dengan Lajur Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!