SQL Server PIVOT (日本語)

概要:このチュートリアルでは、SQL Server PIVOT演算子の使用方法を学習します。行を列に変換します。

目標の設定

デモンストレーションでは、production.productsとテーブル:

次のクエリは、各製品カテゴリの製品数を検索します。

出力は次のとおりです。

私たちの目標は、出力の最初の列のカテゴリ名を複数の列に変換し、それぞれの製品の数を数えることです。次の図のようなカテゴリ名:

さらに、モデル年を追加してカテゴリをグループ化できます次の出力に示すように、モデル年ごとのORY:

SQL ServerPIVOT演算子の概要

SQL Server PIVOT演算子は、テーブル値の式をローテーションします。 1つの列の一意の値を出力の複数の列に変換し、残りの列の値に対して集計を実行します。

次の手順に従って、クエリをピボットテーブルにします。

  • まず、ピボットするベースデータセットを選択します。
  • 次に、派生テーブルまたは共通テーブル式(CTE)を使用して一時的な結果を作成します。
  • 3番目に、

演算子。

次の例でこれらの手順を適用しましょう。

まず、

およびproduction.categoriesテーブル:

次に、派生テーブルを使用して一時的な結果セットを作成します。

3番目に、PIVOT演算子を適用します。

このクエリは次の出力を生成します:

これで、クエリの選択リストに追加する追加の列で、ベースデータは、ピボットテーブルに行グループを自動的に形成します。たとえば、上記のクエリにモデル年の列を追加できます。

出力は次のとおりです:

列値の生成

上記のクエリでは、

演算子を手動で。これを回避するには、QUOTENAME()関数を使用してカテゴリ名リストを生成し、クエリにコピーします。

まず、カテゴリ名リストを生成します。

出力は次のようになります。

このスニペットの内容:

  • QUOTENAME()関数は角かっこで囲まれたカテゴリ名(例:
  • LEFT()関数は、@ columns文字列から最後のカンマを削除します。

次に、出力からカテゴリ名リストをコピーしてクエリに貼り付けます。

動的ピボットテーブル

追加する場合production.categoriesテーブルに新しいカテゴリ名を追加するには、クエリを書き直す必要がありますが、これは理想的ではありません。これを回避するには、動的SQLを使用してピボットテーブルを動的にすることができます。

このクエリでは、カテゴリ名の固定リストをPIVOT演算子では、カテゴリ名リストを作成してSQLステートメントに渡し、ストアドプロシージャsp_executesqlを使用してこのステートメントを動的に実行します。

このチュートリアルでは、SQL Server PIVOTテーブルを使用して行を列に変換する方法を学習しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です