例: マルチレベルPPIを定義するパーティション化式のリストでCASE_Nの使用 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/tpt1555966086716.ditamap
dita:ditavalPath
ja-JP/tpt1555966086716.ditaval
dita:id
B035-1145
Product Category
Software
Teradata Vantage

以下の例では、「例: 行が割り当てられるパーティションの定義」を変更して、マルチレベル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'より大きい。