SQLServerのPIVOTを使って縦横(行列)変換を行う方法

SQLServerではPIVOTを利用することで、簡単に縦横(行列)変換することができます。

SQL ServerのPIVOT句

PIVOT関係演算子は、テーブル値式の中のある列から一意の値を取得して出力側の複数の列に変換することで式を行列変換し、最終的な出力のそれ以外の列値に必要な集計を行います。

準備として1行「名前」と「科目」、「その得点」を持ったテーブルを用意し、そのデータを人ごとに各科目の得点を1行として出力します。

実際のSQLは以下の通りです。

上記のSQLを実行した実行結果は以下のようになります。

名前 英語 国語 数学 理科 社会
トラスト1号 100 90 80 70 60
トラスト2号 50 40 30 20 10
トラスト3号 20 30 40 50 60

難しくはないですね。

注意が必要なのはPIVOTに指定する集計カラム(今回の場合は「得点」)は集約することが必要です。
(SUM関数を外すとエラーになります。)

以上、SQL ServerのPIVOT句を使って縦横(行列)変換を行う方法でした。