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