17.10 - 例: 異なる応答モードのPIVOTクエリー応答 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1145-171K-JPN
Language
日本語 (日本)

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