17.10 - 例: マルチレベルPPIを定義するパーティション化式のリストでCASE_Nの使用 - 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
日本語 (日本)

以下の例では、「例: 行が割り当てられるパーティションの定義」を変更して、マルチレベルPPIを定義するパーティション化式のリストでCASE_Nを使用しています。

   CREATE TABLE orders 
    (storeid INTEGER NOT NULL
    ,productid INTEGER NOT NULL
    ,orderdate DATE FORMAT 'yyyy-mm-dd' NOT NULL
    ,totalorders INTEGER NOT NULL)
    PRIMARY INDEX (storeid, productid) 
     PARTITION BY (CASE_N(totalorders < 100, totalorders < 1000,
                          NO CASE)
                  ,CASE_N(orderdate <= '2005-12-31', NO CASE) );

この例では、行が割り当てられる6つのパーティションが定義されています。最初のCASE_N式は、totalorders列の値に基づいて3つのパーティションを定義しています。2番目のCASE_N式は、orderdate列の値に基づいて3つのパーティションをそれぞれ2つのパーティションに再分割しています。

レベル1パーティション番号 レベル2パーティション番号 条件
1 1 totalorders列の値は100より小さく、orderdate列の値は'2005-12-31'より小さいか等しい。
2 totalorders列の値は100より小さく、orderdate列の値は'2005-12-31'より大きい。
2 1 totalorders列の値は1000より小さく、100より大きいか等しい。orderdate列の値は'2005-12-31'より小さいか等しい。
2 totalorders列の値は1000より小さく、100より大きいか等しい。orderdate列の値は'2005-12-31'より大きい。
3 1 totalorders列の値は1000より大きいか等しく、orderdate列の値は'2005-12-31'より小さいか等しい。
2 totalorders列の値は1000より大きいか等しく、orderdate列の値は'2005-12-31'より大きい。