ホームページ > データベース > mysql チュートリアル > T-SQL の複数の列をピボットしてレポート用にデータを再形成する方法

T-SQL の複数の列をピボットしてレポート用にデータを再形成する方法

DDD
リリース: 2025-01-05 09:52:43
オリジナル
254 人が閲覧しました

How to Pivot Multiple Columns in T-SQL to Reshape Data for Reporting?

TSQL での複数の列のピボット

リレーショナル データベースを使用する場合、レポート目的でデータを再形成することが必要になることがよくあります。ピボットは、データを行指向の構造から列指向の構造に変換するために利用できる手法です。この記事では、関連付けられたすべてのラベルを保持しながらテーブル内の複数の列をピボットする方法を説明します。

チャレンジ

GRAND_TOTALS:

RATIO RESULT SCORE GRADE
Current Ratio 1.294 60 Good
Gearing Ratio 0.3384 70 Good
Performance Ratio 0.0427 50 Satisfactory
TOTAL NULL 180 Good
という名前の次のテーブルについて考えてみましょう。

目的は、RESULT、SCORE、GRADE 列をピボットして、テーブルを作成することです。次の形式で:

RATIO Current Ratio Gearing Ratio Performance Ratio TOTAL
Result 1.294 0.3384 0.0427 NULL
Score 60 70 50 180
Grade Good Good Satisfactory Good

解決策

複数の列を効果的にピボットするには、次の手順を検討してください:

  1. 結果、スコア、およびグレードのピボットを解除する列:

    アンピボットには以下が含まれます元の列名を追跡しながら、複数の列を単一の列に変換します。これは、UNPIVOT 句を使用して実現できます。以下の構文は、列のピボットを解除する方法を示しています。

    select ratio, col, value
    from GRAND_TOTALS
    cross apply
    (
      select 'result', cast(result as varchar(10)) union all
      select 'score', cast(score as varchar(10)) union all
      select 'grade', grade
    ) c(col, value)
    ログイン後にコピー

    このクエリは、RATIO、COL、および VALUE 列を含む新しいテーブルを作成します。COL は元の列名 (結果、スコア、または成績) を表します。 ) と VALUE には対応する値が含まれます。

  2. PIVOT 関数:

    データのピボットが解除されると、PIVOT 関数を適用してデータを目的の形式に変換できます。ピボットの構文は次のとおりです。

    select ratio = col,
      [current ratio], [gearing ratio], [performance ratio], total
    from
    (
      select ratio, col, value
      from GRAND_TOTALS
      cross apply
      (
        select 'result', cast(result as varchar(10)) union all
        select 'score', cast(score as varchar(10)) union all
        select 'grade', grade
      ) c(col, value)
    ) d
    pivot
    (
      max(value)
      for ratio in ([current ratio], [gearing ratio], [performance ratio], total)
    ) piv;
    ログイン後にコピー

    このクエリでは、PIVOT 関数は RATIO 列ごとに行をグループ化し、列ヘッダーとして COL 値を使用してデータをピボットします。 MAX 集計関数は、各行の最新の値を取得するために使用されます。

Result

上記のクエリを実行すると、目的のピボット テーブルが生成されます。 :

RATIO Current Ratio Gearing Ratio Performance Ratio TOTAL
grade Good Good Satisfactory Good
result 1.29400 0.33840 0.04270 NULL
score 60.00000 70.00000 50.00000 180.00000

このテーブルは必要なラベルをすべて保持し、必要なラベルを正常にピボットします列。

以上がT-SQL の複数の列をピボットしてレポート用にデータを再形成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート