例: INリストに含まれていた別名 - Teradata Database - Teradata Vantage NewSQL Engine - PIVOT関数の例。

Teradata Vantage™ SQL関数、演算子、式および述部

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/xzf1512079057909.ditamap
dita:ditavalPath
ja-JP/xzf1512079057909.ditaval
dita:id
B035-1145
Product Category
Software
Teradata Vantage

この例では、次の定義と内容を持つstar1テーブルを使用します。

CREATE TABLE star1(country VARCHAR(20),state VARCHAR(10), yr INTEGER,qtr VARCHAR(3),sales INTEGER,cogs INTEGER);

SELECT * FROM star1;
country  state           yr  qtr        sales         cogs
-------  -----  -----------  ---  -----------  -----------
USA      CA            2001  Q1            30           15
Canada   ON            2001  Q2            10            0
Canada   BC            2001  Q3            10            0
USA      NY            2001  Q1            45           25
USA      CA            2001  Q2            50           20

この例では、INリストには別名が含まれます。これらの別名は集約関数によって指定された別名と連結され、出力ピボット テーブルの列名を構成します。

SELECT *
FROM star1 PIVOT (
                   SUM(sales) as ss1, SUM(cogs) as sc FOR qtr                                                                                               
                                       IN (‘Q1’ AS Quarter1,                                                                                                     
                                           ‘Q2’ AS Quarter2, 
                                           ‘Q3’ AS Quarter3)
                                          )Tmp;

出力は、CASE文を使用して同等のSELECTクエリーとして書き換えられます。

SELECT *  FROM  (SELECT country ,state ,yr ,
SUM(CASE WHEN qtr =  'Q1' THEN sales ELSE NULL END )AS  Quarter1_ss1,
SUM(CASE WHEN qtr =  'Q1' THEN (cogs) ELSE NULL END )AS Quarter1_sc,
SUM(CASE WHEN qtr =  'Q2' THEN (sales) ELSE NULL END)AS Quarter2_ss1,
SUM(CASE WHEN qtr =  'Q2' THEN (cogs) ELSE NULL  END)AS Quarter2_sc,
SUM(CASE WHEN qtr =  'Q3' THEN (sales) ELSE NULL END)AS Quarter3_ss1,
SUM(CASE WHEN qtr =  'Q3' THEN (cogs) ELSE NULL END)AS Quarter3_sc
FROM star1 GROUP BY country ,state ,yr ) Tmp ;

ピボット出力テーブル:

country state yr   Quarter1_ss1 Quarter1_sc Quarter2_ss1 Quarter2_sc Quarter3_ssl Quarter3_sc
------- ---- ----  ------------ ----------- ------------ ----------- ------------ -----------
USA     CA  2001             30          15           50          20            ?           ?
USA     NY  2001             45          25            ?           ?            ?           ?
Canada  ON  2001              ?           ?           10           0            ?           ?
Canada  BC  2001              ?           ?            ?           ?           10           0