Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengubah Data Secara Dinamik dalam T-SQL Menggunakan Pangsi Dinamik?
Ubah data dalam T-SQL menggunakan pangsi dinamik
Kadangkala adalah perlu untuk menukar data daripada format lebar kepada format jadual yang lebih berstruktur. Pertimbangkan situasi di mana jadual mengandungi berbilang lajur jenis dan nilai data yang berbeza, dan data perlu dipangsi secara dinamik untuk mendapatkan set hasil yang menyediakan baris berbeza untuk setiap ID dan nilai lajur yang sepadan.
Satu cara untuk mencapai penukaran ini ialah menggunakan ciri pangsi dinamik T-SQL. Contoh berikut menunjukkan cara untuk menukar data secara dinamik menggunakan T-SQL:
<code class="language-sql">CREATE TABLE #Table ( ID INT, ColumnName VARCHAR(250), Value VARCHAR(250) ); -- 示例数据 INSERT INTO #Table SELECT 1,'name','Peter'; INSERT INTO #Table SELECT 1,'phone','12345678'; INSERT INTO #Table SELECT 1,'email','[email protected]'; INSERT INTO #Table SELECT 2,'name','John'; INSERT INTO #Table SELECT 2,'phone','87654321'; INSERT INTO #Table SELECT 2,'email','[email protected]'; INSERT INTO #Table SELECT 3,'name','Sarah'; INSERT INTO #Table SELECT 3,'phone','55667788'; INSERT INTO #Table SELECT 3,'email','[email protected]'; DECLARE @cols NVARCHAR(2000); DECLARE @query NVARCHAR(4000); -- 动态构建枢轴的列列表 SELECT @cols = STUFF(( SELECT DISTINCT TOP 100 PERCENT '],[' + t.ColumnName FROM #Table AS t -- 按 ID 排序以确保列顺序一致 ORDER BY '],[' + CAST(t.ID AS VARCHAR(10)) FOR XML PATH('') ), 1, 2, '') + ']' SELECT @cols; -- 动态构建 PIVOT 查询 SET @query = N'SELECT ID,'+ @cols +' FROM (SELECT t1.ID,t1.ColumnName , t1.Value FROM #Table AS t1) p PIVOT (MAX([Value]) FOR ColumnName IN ( '+ @cols +' )) AS pvt;'; -- 执行动态 PIVOT 查询 EXECUTE(@query); -- 删除临时表 DROP TABLE #Table;</code>
Hasil pelaksanaan skrip di atas akan menjadi jadual pangsi dengan baris yang berbeza untuk setiap ID dan nilai lajur yang sepadan.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Data Secara Dinamik dalam T-SQL Menggunakan Pangsi Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!