Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengubah Data Secara Dinamik dengan Lajur Tidak Diketahui dalam SQL Server 2005?

Bagaimana untuk Mengubah Data Secara Dinamik dengan Lajur Tidak Diketahui dalam SQL Server 2005?

Mary-Kate Olsen
Lepaskan: 2025-01-13 09:46:43
asal
785 orang telah melayarinya

How to Dynamically Pivot Data with Unknown Columns in SQL Server 2005?

SQL Server 2005 Dynamic Pivot

Dalam SQL Server 2005, operasi pangsi dengan bilangan lajur yang tidak diketahui boleh menjadi rumit. Artikel ini meneroka penyelesaian kepada masalah sedemikian.

Soalan:

Bagaimana untuk memutar data secara dinamik dengan bilangan lajur yang tidak diketahui dalam SQL Server 2005? Output yang diingini harus menyerupai jadual dengan pelajar unik sebagai baris, lajur dinamik mewakili tugasan dan diisih mengikut tarikh tamat. Jika boleh, lajur "Jumlah" akan dipaparkan yang terakhir.

Jawapan:

Disebabkan pengehadan SQL Server 2005, mungkin perlu menggunakan SQL dinamik untuk melaksanakan pangsi dinamik. Satu penyelesaian yang mungkin adalah untuk memanfaatkan pandangan pengurusan dinamik (DMV) dan XML untuk menjana pernyataan SQL dinamik.

<code class="language-sql">DECLARE @DynamicSQL NVARCHAR(MAX) = N'';

-- 从表中获取不同的作业名称
SELECT DISTINCT AssignmentName
INTO #AssignmentNames
FROM TableName;

-- 循环遍历作业名称
SELECT @DynamicSQL = @DynamicSQL + '
  MAX(CASE WHEN AssignmentName = ''' + AssignmentName + ''' THEN Grade END) AS ' + AssignmentName + ','

FROM #AssignmentNames;

-- 删除动态 SQL 语句末尾的逗号
SET @DynamicSQL = LEFT(@DynamicSQL, LEN(@DynamicSQL) - 1);

-- 构造用于透视的最终动态 SQL 语句
SET @DynamicSQL = 'SELECT StudentName, ' + @DynamicSQL + '
  FROM TableName
  GROUP BY StudentName;';

-- 执行动态 SQL 语句
EXEC sp_executesql @DynamicSQL;</code>
Salin selepas log masuk

Kaedah ini menjana pernyataan SQL dinamik yang mengandungi lajur yang diperlukan untuk berputar berdasarkan nama kerja berbeza yang dikenal pasti dalam jadual.

Nota:

Walaupun penyelesaian ini melibatkan SQL dinamik, ia tidak terdedah kepada serangan suntikan kerana pernyataan SQL dibina daripada data yang diketahui dan dipercayai. Sebagai alternatif, jika data kerap berubah, pertimbangkan untuk melaksanakan penjanaan kod untuk mencipta prosedur tersimpan dengan pernyataan SQL yang diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Data Secara Dinamik dengan Lajur Tidak Diketahui dalam SQL Server 2005?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan