概要:このチュートリアルでは、Oracle UNPIVOT
句を使って列を行に転置する方法を学びます。
Introduction to Oracle UNPIVOT clause
The Oracle UNPIVOT
clause allows you to transpose columns to rows.If you have been upgraded upgraded to Oracle UNPIVOT clause. UNPIVOT
句はPIVOT
句と逆で、転置の際にデータを非集約化しない点が異なる。
Oracle UNPIVOT
節の構文を次に示します:
この構文の場合:
-
unpivot_clause
ではピボットなしのメジャー値を表す列の名前を指定することができます。 - では、メジャーの値を保持する各列の名前を指定できます。
-
unpivot_in_clause
には、ピボットされない列が含まれます。
INCLUDE | EXCLUDE NULLS
節では、空値行を含めたり除外することができます。
-
INCLUDE NULLS
句は、Oracle に null-value 行を含めるように指示します。 - 一方、
EXCLUDE NULLS
句は、返される結果セットから null-value 行を除外します。
デフォルトでは、ピボット解除操作は null-value 行を除外します。
理解を深めるために Oracle UNPIVOT
句の使用例をいくつか見てみましょう。
サンプルテーブルの設定
まず、デモ用にsale_stats
という新しいテーブルを作成します:
次に、sale_stats
テーブルにいくつかの行を挿入します:
次に、sale_stats
テーブルからデータをクエリーします:
以下が出力例です。
Oracle UNPIVOT examples
このステートメントは、UNPIVOT
句を使って列product_a
、product_b
、product_c
を行にローテーションするものです。
この例では:
unpivot_clause
はquantity
で、これはproduct_a
, product_b
, product_c
列からピボットされていない値を表す列である。
unpivot_for_clause
は FOR product_code
で、メジャーの値を保持する列です。
unpivot_in_clause
節は次のとおりです。
これは、product_a
、product_b
、および product_c
列で値をピボット解除するように Oracle に指示するものです。
次の図は出力を示しています。
デフォルトでは、UNPIVOT
操作は null 値行を除外するので、出力に NULL は表示されません。
次の例では、UNPIVOT
節を使用して、列 product_a
、product_b
、および product_c
の値を行に転置しますが、NULL 値の行を含めます:
以下がその出力です。
Oracle unpivot multiple columns
複数の列をピボット解除する例を見てみましょう。
最初に、sale_stats
テーブルをドロップして再作成します:
次に、sale_stats
テーブルに行を挿入します:
3番目に、sale_stats
テーブルからデータをクエリます。
最後に、UNPIVOT
句を使用して列a_qty
、a_value
、b_qty
、b_value
の値を行に転置する。
ここに結果セットがあります:
この図は、転置プロセスを示しています:
このチュートリアルで、列に転置する Oracle UNPIVOT
句の使用方法を学習しています。
- このチュートリアルは役に立ちましたか?
- YesNo