SELECT文でのEXPAND ON句の使用例については、EXPAND ON句を参照してください。
以下の定義でemployeeという名前のテーブルを作成すると仮定します。
CREATE SET TABLE employee ( emp_id INTEGER, emp_name CHARACTER(20) CHARACTER SET LATIN NOT CASESPECIFIC, job_duration PERIOD(DATE)) PRIMARY INDEX (emp_id);
employeeテーブルに3行を挿入します。
employee | ||
---|---|---|
emp_id | emp_name | job_duration |
1001 |
Xavier |
2002-01-10, 9999-12-31 |
1002 |
Ricci |
2007-07-01, 9999-12-31 |
1003 |
Charles |
2006-02-10, 2008-06-01 |
Interval型定数を使用してEXPAND ON句を指定すると、Teradata Databaseは指定した間隔値に基づいて各行を拡張します。拡張された期間の継続期間は間隔値になります。
そこで、EXPAND ON句を使用して、間隔定数の期間を指定しているemployeeの詳細を取得します。
SELECT emp_id, emp_name, job_duration AS tsp FROM employee EXPAND ON job_duration AS tsp BY INTERVAL '1' YEAR FOR PERIOD(DATE '2006-01-01', DATE '2008-01-01');
Teradata Databaseは、SELECT文のFOR句で指定したように、指定した期間の各年のemployeeの詳細を返します。
拡張された結果内の行の拡張された期間の継続期間が、指定した間隔の継続期間よりも短い可能性のある要求元には、Teradata Databaseから警告が返されます。
emp_id ------ |
emp_name -------- |
job_duration ------------ |
tsp --- |
|
---|---|---|---|---|
1003 | Charles | 2006-02-10, 2008-06-01 | 2006-02-10, 2007-02-10 | |
1003 | Charles | 2006-02-10, 2008-06-01 | 2007-02-10, 2008-01-01 | |
1002 | Ricci | 2007-07-01, 9999-12-31 | 2007-07-01, 2008-01-01 | |
1001 | Xavier | 2002-01-10, 9999-12-31 | 2006-01-01, 2007-01-01 | |
1001 | Xavier | 2002-01-10, 9999-12-31 | 2007-01-01, 2008-01-01 |