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