例: ピボット クエリーで別名を切り捨てる - 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

この例の最初の部分では、EnableEON dbscontrolフラグはfalseに設定されているため、列名の制限はデフォルトで30文字になります。

テーブルt1が次のように定義されると仮定します。

CREATE TABLE t1(yr INTEGER, mon VARCHAR(41), sales INTEGER);

またテーブルt1に以下の行が含まれているとします。

SELECT * FROM  t1;
yr	    mon                                         sales
----   ----------------------------------          -----
2001	  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa          200

行では、‘mon’列に35文字が含まれています。

次のピボット クエリー結果は、‘mon’列の値を35文字から30文字に切り詰めます。

SELECT * FROM t1 PIVOT(SUM(sales) FOR mon IN ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'))tmp;

YR	 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
----  -------------------------------
2001	 200

ここで、EnableEON dbscontrolフラグをtrueに設定する、つまり列名の制限のデフォルトを128文字にすると仮定します。

またテーブルt2が次のように定義されると仮定します。

CREATE TABLE t2(yr INTEGER, mon VARCHAR(131), sales INTEGER);

テーブルt2に以下の行が含まれているとします。

SELECT mon FROM t2;
mon
-------------------------------------------------------------------------------------------------------------------------------
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

行では、‘mon’列に130文字が含まれています。

次のピボット クエリーでは、‘mon’列の値が130文字から128文字に切り詰められます。

SELECT * FROM t2 PIVOT(SUM(sales) FOR mon IN ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')) tmp;

YR   
----
2001
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
----------------------------------------------------------------------------------------------------------------------------------
200