16.20 - 例: 複数の値列 - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL演算子およびユーザー定義関数

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
管理
featnum
B035-1210-162K-JPN

次の例では、値列が2つ以上あり、COLUMN_LISTの書式は'a, x, ..', 'b, y, ..', 'c, z, ...', ...となります。a、x、b、y、c、z...は、値列にピボット解除される列の名前です。

個々のリスト、例えば'a, x, ..',では、1つの出力行の値列にどの列をマップするかを定義します。

入力テーブルTには、id、year、jan_sales、jan_expense、feb_sales、feb_expense、...、dec_sales、dec_expenseなどの列があります。

SELECT * from UNPIVOT(
        ON( select * from T)
        USING
            VALUE_COLUMNS('monthly_sales', 'monthly_expense')
            UNPIVOT_COLUMN('month')
            COLUMN_LIST('jan_sales, jan_expense', 'feb_sales,                feb_expense', ..., 'dec_sales, dec_expense')
            COLUMN_ALIAS_LIST('jan', 'feb', ..., 'dec' )
    )X;

出力列はid、year、month、monthly_sales、monthly_expenseです。

入力行は、次のようになっています。

id   year  jan_sales  jan_exp feb_sales feb_exp...dec_sales dec_exp
123   2012  100        50      200       100  ...  1200      600

12行の出力が生成されます。

id  year    month   monthly_sales   monthly_expense
    123 2012    jan     100             50
    123 2012    feb     200             100
    ...
    123 2012    dec     1200            600