この例では、アンカー ピリオド拡張およびアンカー ポイント拡張を行なうための、アンカー間隔の使用方法を示します。アンカー ピリオド拡張の場合、拡張された期間値は拡張中の期間とオーバーラップする必要がありますが、アンカー ポイント拡張の場合は、拡張された期間値の開始値は、拡張中の期間内に含まれている必要があり、より制限の厳しい条件になっています。
まず、sold_productsテーブルを作成します。
CREATE SET TABLE sold_products, NO FALLBACK ( product_id INTEGER, product_price DECIMAL(10,2), product_duration PERIOD(DATE)) PRIMARY INDEX (product_id);
sold_productsテーブルには、次の行が含まれます。
product_id | product_price | product_duration |
---|---|---|
1000 | 100.00 | 2007-02-15, 2007-08-11 |
1001 | 99.99 | 2007-03-04, 2007-05-01 |
次のSELECT文では、MONTH_BEGINのアンカー ピリオドを指定します。これはアンカー ピリオド拡張です。
SELECT product_id, product_price, product_duration, expd FROM sold_products EXPAND ON product_duration AS expd BY ANCHOR PERIOD MONTH_BEGIN;
文が以下の9つの行を返します。元の2つの行は赤色で強調表示されています。
product_id | product_price | product_duration | expd |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-02-01,2007-03-01 |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-03-01,2007-04-01 |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-04-01,2007-05-01 |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-05-01,2007-06-01 |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-06-01,2007-07-01 |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-07-01,2007-08-01 |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-08-01,2007-09-01 |
1001 | 99.99 | 2007-03-04,2007-05-01 | 2007-03-01,2007-04-01 |
1001 | 99.99 | 2007-03-04,2007-05-01 | 2007-04-01,2007-05-01 |
同じデータに対して行なわれたアンカー ポイント拡張の場合は、以下の例が示すように、影の付いた行は表示されません。
次のテーブルでは、アンカー ポイントとアンカー ピリオド拡張の相違について説明します。
拡張タイプ | 説明 |
---|---|
Anchor Period Expansion(アンカー期間展開) | 拡張された期間値は、拡張中の期間とオーバーラップする必要があります。 |
Anchor Point Expansion(アンカー時点展開) | 拡張された期間値の開始値は、拡張中の期間内に含まれている必要があります。 |
以下のSELECT文を実行します。これは、単純に列名を指定する代わりに、product_durationにBEGIN境界機能を指定している点が、前の文とは異なります。これは、前のアンカー ピリオド拡張と同じデータに対して行なうアンカー ポイント拡張です。
SELECT product_id, product_price, product_duration, BEGIN(expd) FROM sold_products EXPAND ON product_duration AS expd BY ANCHOR MONTH_BEGIN;
この文からは9行ではなく7行返されます。赤い影付きの行は、前の例の行で、結果セットには表示されません。
product_id | product_price | product_duration | begin(expd) |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-03-01 |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-04-01 |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-05-01 |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-06-01 |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-07-01 |
1000 | 100.00 | 2007-02-15,2007-08-11 | 2007-08-01 |
1001 | 99.99 | 2007-03-04,2007-05-01 | 2007-04-01 |