Oracle 10gを使用していますが、間隔が重複しているテーブルがあります。簡略化された形式で:
create TABLE INTERVAL_TEST (
STARTDATE DATE NOT NULL,
ENDDATE DATE,
ITEM VARCHAR2(100) NOT NULL
)
insert into INTERVAL_TEST (STARTDATE, ENDDATE, ITEM) values (to_date('2012-01-01', 'YYYY-MM-DD'), null, 'AAA');
insert into INTERVAL_TEST (STARTDATE, ENDDATE, ITEM) values (to_date('2012-02-01', 'YYYY-MM-DD'), to_date('2012-03-01', 'YYYY-MM-DD'), 'BBB');
ご覧のとおり、重複するエントリがあります。最初のもののnullは、これが「永久に」有効であることを意味します。タイムラインに履歴を表示し、各行の有効なアイテムの数をリストするレポートを生成する必要があります。出力に時間の重複があってはなりません。代わりに、変更がなかったサブインターバルごとにすべての有効なアイテムがリストされている必要があります。
START END VALID_ITEMS
---------- ---------- --------------
2012-01-01 2012-02-01 AAA
2012-02-01 2012-03-01 AAA, BBB
2012-03-01 NULL AAA
そのような結果を生成するSQLステートメントはありますか?