ホームページ > データベース > mysql チュートリアル > 分析を容易にするために、Oracle SQL でフラット月次データをピボットするにはどうすればよいですか?

分析を容易にするために、Oracle SQL でフラット月次データをピボットするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-23 07:37:10
オリジナル
724 人が閲覧しました

How Can I Pivot Flat Monthly Data in Oracle SQL for Easier Analysis?

Oracle SQL ピボット テーブル データの再構築

問題: ピボット分析用にフラットな表形式データを変換する

月ごとに整理された数値データを含むテーブルがあるとします。

<code>MONTH | VALUE
-------|------
1      | 100
2      | 200
3      | 300
...</code>
ログイン後にコピー

目標は、このデータをピボット形式に変換して、毎月の値をより視覚的に表示することです:

<code>MONTH_JAN | MONTH_FEB | MONTH_MAR | ...
---------|---------|---------|
100       | 200       | 300       | ...</code>
ログイン後にコピー
ログイン後にコピー

Oracle 11g 以降: PIVOT 演算子

Oracle 11g 以降では、データの簡単なピボットを可能にする PIVOT 演算子が導入されています。構文は次のとおりです:

<code>SELECT *
FROM table_name
PIVOT (
  aggregate_function(column_name)
  FOR (pivot_column)
  IN (list_of_values)
);</code>
ログイン後にコピー

PIVOT 演算子の使用例

次のデータ例を考えてみましょう:

<code>CREATE TABLE tq84_pivot (
  month NUMBER,
  value NUMBER
);

INSERT INTO tq84_pivot VALUES (1, 100), (2, 200), (3, 300), (4, 400), (5, 500), (6, 600);

SELECT 
  *
FROM 
  tq84_pivot
PIVOT (
  SUM(value) AS sum_value
  FOR (month) IN (1 AS month_jan,
                  2 AS month_feb,
                  3 AS month_mar,
                  4 AS month_apr,
                  5 AS month_mai,
                  6 AS month_jun,
                  7 AS month_jul,
                  8 AS month_aug,
                  9 AS month_sep,
                 10 AS month_oct,
                 11 AS month_nov,
                 12 AS month_dec)
);</code>
ログイン後にコピー

結果は期待どおりです:

<code>MONTH_JAN | MONTH_FEB | MONTH_MAR | ...
---------|---------|---------|
100       | 200       | 300       | ...</code>
ログイン後にコピー
ログイン後にコピー

以上が分析を容易にするために、Oracle SQL でフラット月次データをピボットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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