Отчет временной шкалы Oracle о перекрывающихся интервалах

Я использую 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');

Как видите, есть перекрывающиеся записи. Нуль в первом означает, что это действительно "навсегда". Мне нужно создать отчет, который показывает историю на временной шкале, перечисляя количество допустимых элементов для каждой строки. В выходных данных не должно быть перекрытий по времени -, вместо этого должны быть перечислены все допустимые элементы для каждого подинтервала, где не было изменений:

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, который генерирует такой результат?

5
задан lbalazscs 6 July 2012 в 14:43
поделиться