Data pangsi dinamik menggunakan SQL Server 2005
Dalam SQL Server 2005, anda mungkin perlu menukar data dengan bilangan lajur yang tidak diketahui kepada format pangsi. Artikel ini meneroka cabaran ini dan menyediakan penyelesaian menggunakan teknologi SQL Server 2005.
Soalan:
Pertimbangkan set data yang diberikan tempat tugasan dan gred pelajar disimpan. Output yang diingini ialah jadual pangsi yang menunjukkan setiap gred pelajar untuk semua tugasan dan pada akhir jumlah gred. Yang penting, ini mestilah dinamik untuk menampung bilangan pekerjaan yang berbeza-beza. Selain itu, pengisihan mengikut tarikh akhir tugasan dan tidak termasuk gred keseluruhan daripada pertanyaan juga sesuai.
Penyelesaian (Dynamic SQL):
Walaupun SQL dinamik biasanya tidak disyorkan, dalam kes ini ia menyediakan penyelesaian yang paling praktikal. Berikut ialah contoh skrip SQL dinamik yang menjana set hasil pivoted:
<code class="language-sql">DECLARE @sql NVARCHAR(MAX) SET @sql = 'SELECT StudentName, ' + STUFF(( SELECT ',[' + AssignmentName + ']' FROM AssignmentNames FOR XML PATH('') ), 1, 1, '') + ' FROM Assignments PIVOT (SUM(Grade) FOR AssignmentName IN (' + STUFF(( SELECT ',' + AssignmentName FROM AssignmentNames FOR XML PATH('') ), 1, 1, '') + ')) AS PivotTable' -- 执行生成的SQL EXEC sp_executesql @sql</code>
Arahan:
Pendekatan SQL dinamik ini memberikan fleksibiliti dalam mengendalikan perubahan nombor kerja dan menyusun mengikut tarikh akhir kerja. Walau bagaimanapun, pastikan anda menyemak semula SQL yang dijana secara dinamik untuk memastikan ia tidak terdedah kepada input berniat jahat.
Alternatif:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Data Secara Dinamik dalam SQL Server 2005 untuk Mengendalikan Bilangan Lajur yang Tidak Diketahui?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!