Oracle UNPIVOT

概要:このチュートリアルでは、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

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 - sample table

Oracle UNPIVOT examples

このステートメントは、UNPIVOT句を使って列product_aproduct_bproduct_cを行にローテーションするものです。

この例では:

unpivot_clausequantityで、これはproduct_a, product_b, product_c列からピボットされていない値を表す列である。

unpivot_for_clauseFOR product_code で、メジャーの値を保持する列です。

unpivot_in_clause 節は次のとおりです。

これは、product_aproduct_b、および product_c 列で値をピボット解除するように Oracle に指示するものです。

次の図は出力を示しています。

oracle unpivot - example

デフォルトでは、UNPIVOT 操作は null 値行を除外するので、出力に NULL は表示されません。

次の例では、UNPIVOT 節を使用して、列 product_aproduct_b、および product_c の値を行に転置しますが、NULL 値の行を含めます:

以下がその出力です。

oracle unpivot include nulls example

Oracle unpivot multiple columns

複数の列をピボット解除する例を見てみましょう。

最初に、sale_statsテーブルをドロップして再作成します:

次に、sale_statsテーブルに行を挿入します:

3番目に、sale_statsテーブルからデータをクエリます。

最後に、UNPIVOT句を使用して列a_qtya_valueb_qtyb_valueの値を行に転置する。

ここに結果セットがあります:

oracle unpivot multiple columns example

この図は、転置プロセスを示しています:

Oracle unpivot multiple columns

このチュートリアルで、列に転置する Oracle UNPIVOT 句の使用方法を学習しています。

  • このチュートリアルは役に立ちましたか?
  • YesNo

コメントを残す

メールアドレスが公開されることはありません。