ホームページ >データベース >mysql チュートリアル >最適なデータ プレゼンテーションのために SQL Server の複数の列をピボットする方法

最適なデータ プレゼンテーションのために SQL Server の複数の列をピボットする方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-31 18:21:12199ブラウズ

How to Pivot Multiple Columns in SQL Server for Optimal Data Presentation?

最適なデータ プレゼンテーションを実現する SQL Server の複数の列のピボット

リレーショナル データベースを使用する場合、テーブルのピボットはデータを再形成する効果的な方法となる可能性があります分析と視覚化が容易になります。 SQL Server では、この手法は、行として表示したい複数の列があるテーブルを扱う場合に特に役立ちます。

問題ステートメント:

次のサンプルを考えてみましょう。 table:

Branch  | Category | Sales | Stock  | Target
------- | ******** | ----- | ----- | -------
Branch1 | Panel    | 100   | 200   | 300
Branch1 | AC       | 150   | 250   | 350
Branch1 | Ref      | 200   | 300   | 400

目標は、Category 列をピボットし、Sales、Stock、Target 列を行として表示することです。次の出力が得られます:

Branch  | Panel | AC   | Ref  |
------- | ------ | -- | ---- |
Branch1 | 100   | 150 | 200  |

解決策:

目的の出力を実現するには、SQL Server で一連のピボット ステートメントを使用します。重要なのは、後続のピボット操作に備えて、中間ピボット結果の列の名前を変更することです。

次のコードを考えてみましょう。

SELECT
*
FROM
(
  SELECT 
   Branch,
   Category,
   Category+'1' As Category1,
   Category+'2' As Category2,
   Sales, 
   Stock, 
   Target
  FROM TblPivot
 ) AS P

 -- For Sales
 PIVOT
 (
   SUM(Sales) FOR Category IN ([Panel], [AC], [Ref])
 ) AS pv1

 -- For Stock
 PIVOT
 (
   SUM(Stock) FOR Category1 IN ([Panel1], [AC1], [Ref1])
 ) AS pv2

 -- For Target
 PIVOT
 (
   SUM(Target) FOR Category2 IN ([Panel2], [AC2], [Ref2])
 ) AS pv3
 GO

このコードは、次の手順を実行します。

  1. データの準備: カテゴリ列の名前を変更し、追加します後続のピボットを容易にするための 2 つの追加列、Category1 と Category2。
  2. Pivot for Sales: 最初のピボット ステートメントは、各カテゴリの売上を合計する pv1 テーブルを作成します。
  3. Pivot for Stock: 2 番目のピボット ステートメントは、pv2 テーブルを作成します。各カテゴリの在庫を合計します。
  4. ターゲットのピボット: 3 番目のピボット ステートメントは、各カテゴリのターゲットを合計する pv3 テーブルを作成します。

結果として得られる pv3 テーブルには、行としてのカテゴリと、売上、在庫、目標値を表す列を含む目的の出力が含まれます。

以上が最適なデータ プレゼンテーションのために SQL Server の複数の列をピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。