ホームページ >データベース >mysql チュートリアル >SQL Server 2005 でデータを動的にピボットして未知の数の列を処理するにはどうすればよいですか?
SQL Server 2005 を使用した動的ピボット データ
SQL Server 2005 では、列数が不明なデータをピボット形式に変換する必要がある場合があります。この記事では、この課題を検討し、SQL Server 2005 テクノロジを使用したソリューションを提供します。
質問:
生徒の課題と成績が保存されている特定のデータセットについて考えてみましょう。望ましい出力は、すべての課題に対する各生徒の成績と、最後に合計成績を示すピボット テーブルです。重要なのは、さまざまな数のジョブに対応できるように、これが動的である必要があります。さらに、課題の締め切り日で並べ替え、全体の成績をクエリから除外することも理想的です。
ソリューション (動的 SQL):
動的 SQL は通常推奨されませんが、この場合は最も実用的な解決策となります。以下は、ピボットされた結果セットを生成する動的 SQL スクリプトの例です:
<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>
手順:
この動的 SQL アプローチにより、ジョブ番号の変更の処理とジョブの期限によるソートに柔軟性が提供されます。ただし、動的に生成された SQL を必ずダブルチェックして、悪意のある入力に対して脆弱でないことを確認してください。
代替:
以上がSQL Server 2005 でデータを動的にピボットして未知の数の列を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。