Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencapai Pivoting Dinamik Data Jadual dalam T-SQL?
Pangsi Dinamik dalam T-SQL
Menukar data jadual kepada format yang lebih ringkas adalah penting untuk analisis data dan penjanaan laporan. Satu teknik yang biasa digunakan ialah pivoting, yang melibatkan penukaran baris kepada lajur. Dalam contoh ini, matlamat kami ialah untuk memutar data daripada jadual dengan struktur yang serupa dengan:
ItemID | ColumnName | Value |
---|---|---|
1 | name | Peter |
1 | phone | 12345678 |
1 | [email protected] | |
2 | name | John |
2 | phone | 87654321 |
2 | [email protected] | |
3 | name | Sarah |
3 | phone | 55667788 |
3 | [email protected] |
Tukar kepada struktur yang lebih mesra pengguna:
ItemID | name | phone | |
---|---|---|---|
1 | Peter | 12345678 | [email protected] |
2 | John | 87654321 | [email protected] |
3 | Sarah | 55667788 | [email protected] |
Untuk mencapai ini dalam T-SQL menggunakan pangsi dinamik, ikut langkah berikut:
Buat senarai lajur dinamik:
<code class="language-sql"> DECLARE @cols NVARCHAR(2000) SELECT @cols = STUFF(( SELECT DISTINCT TOP 100 PERCENT '],[' + t.ColumnName FROM #Table AS t FOR XML PATH('') ), 1, 2, '') + ']' </code>
Bina pertanyaan dinamik:
<code class="language-sql"> DECLARE @query NVARCHAR(4000) 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;' </code>
Laksanakan pertanyaan:
<code class="language-sql"> EXECUTE(@query)</code>
Pertanyaan yang dijana akan menggerakkan data secara dinamik, mewujudkan struktur jadual yang lebih padat dan mudah dibaca.
Pendekatan ini menyediakan mekanisme yang fleksibel untuk memutar data, terutamanya jika nama lajur adalah dinamik atau mungkin berubah. Ia membolehkan transformasi data yang cekap dan automatik, menjadikannya alat yang berkuasa untuk pelbagai analisis data dan aplikasi pelaporan.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pivoting Dinamik Data Jadual dalam T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!