次の例では、(COLUMN_LISTに示す)12個の列を12行からなる1列にピボット解除しています。
query_expressionの入力テーブルT(以下のSELECT文に指定)には、id、year、jan_sales、feb_sales、...、dec_salesなどの列があります。
SELECT * from TD_UNPIVOT( ON( select * from T) USING VALUE_COLUMNS('monthly_sales') UNPIVOT_COLUMN('month') COLUMN_LIST('jan_sales', 'feb_sales', ..., 'dec_sales') COLUMN_ALIAS_LIST('jan', 'feb', ..., 'dec' ) )X;
出力列はid、year、month、monthly_salesです。
入力行は、次のようになっています。
id year jan_sales feb_sales ... dec_sales 123 2012 100 200 ... 1200
12行の出力が生成されます。
id year month monthly_sales 123 2012 jan 100 123 2012 feb 200 ... 123 2012 dec 1200
次の例では、値列が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