t1テーブルは次のように定義されていると仮定します。
CREATE TABLE t1(yr INTEGER,mon VARCHAR(3),sales INTEGER); Assume that following insert statements INSERT t1 VALUES(2003,'Jan',300); INSERT t1 VALUES(2001,'Jan',100); INSERT t1 VALUES(2003,'Feb',310); INSERT t1 VALUES(2001,'Feb',110); INSERT t1 VALUES(2002,'Jan',150); INSERT t1 VALUES(2001,'Mar',120); INSERT t1 VALUES(2002,'Feb',200); INSERT t1 VALUES(2002,'Mar',250); INSERT t1 VALUES(2003,'Mar',1000);
PIVOTクエリーが実行のために送信されると仮定すると、出力は異なる応答モードとして返されます。
PIVOTクエリーの場合:
SELECT * FROM t1 PIVOT(SUM(sales) FOR mon IN ('Jan','Feb','Mar')) tmp;
CASE式を使用するSELECT文として書き直されたPIVOTクエリーの場合:
SELECT yr,SUM(case when mon='Jan' then sales end) AS "Jan", SUM(case when mon='Feb' then sales end) AS "Feb", SUM(case when mon='Mar' then sales end) AS "Mar" FROM t1 GROUP BY yr; .field mode *** Query completed. 3 rows found. yr Jan Feb Mar ----------- ----------- ----------- ----------- 2001 100 110 120 2003 300 310 1000 2002 150 200 250 .multipartrecord mode *** Query completed. 3 rows found. yr Jan Feb Mar ---------- ---------- ---------- ---------- 2001 100 110 120 2003 300 310 1000 2002 150 200 250 .record mode *** Query completed. 3 rows found. yr Jan Feb Mar ----------- ----------- ----------- ----------- 2001 100 110 120 2003 300 310 1000 2002 150 200 250 .indicator mode *** Query completed. 3 rows found. yr Jan Feb Mar ----------- ----------- ----------- ----------- 2001 100 110 120 2003 300 310 1000 2002 150 200 250