Oracle 8i SE (т.е. без аналитики, pipeline ...)
Результат нужен в SQL.
Есть интервалы - нужны "дырки".
Тестовые данные:
CREATE TABLE tmp(
Id NUMBER,
d1 DATE,
d2 DATE)
/
INSERT INTO tmp(id, d1, d2)
VALUES(1, TO_DATE('01.01.2000', 'DD.MM.YYYY'), TO_DATE('01.01.2001', 'DD.MM.YYYY'))
/
INSERT INTO tmp(id, d1, d2)
VALUES(2, TO_DATE('01.01.2000', 'DD.MM.YYYY'), TO_DATE('01.01.2002', 'DD.MM.YYYY'))
/
INSERT INTO tmp(id, d1, d2)
VALUES(2, TO_DATE('01.01.2000', 'DD.MM.YYYY'), TO_DATE('01.01.2002', 'DD.MM.YYYY'))
/
INSERT INTO tmp(id, d1, d2)
VALUES(2, TO_DATE('01.01.2001', 'DD.MM.YYYY'), TO_DATE('01.01.2004', 'DD.MM.YYYY'))
/
INSERT INTO tmp(id, d1, d2)
VALUES(3, TO_DATE('01.01.2000', 'DD.MM.YYYY'), TO_DATE('01.01.2002', 'DD.MM.YYYY'))
/
INSERT INTO tmp(id, d1, d2)
VALUES(3, TO_DATE('01.01.2004', 'DD.MM.YYYY'), TO_DATE('01.01.2005', 'DD.MM.YYYY'))
/
INSERT INTO tmp(id, d1, d2)
VALUES(3, TO_DATE('01.01.2005', 'DD.MM.YYYY'), TO_DATE('01.01.2007', 'DD.MM.YYYY'))
/
INSERT INTO tmp(id, d1, d2)
VALUES(4, TO_DATE('01.01.2000', 'DD.MM.YYYY'), TO_DATE('01.01.2007', 'DD.MM.YYYY'))
/
INSERT INTO tmp(id, d1, d2)
VALUES(4, TO_DATE('01.01.2002', 'DD.MM.YYYY'), TO_DATE('01.01.2004', 'DD.MM.YYYY'))
/
INSERT INTO tmp(id, d1, d2)
VALUES(4, TO_DATE('01.01.2003', 'DD.MM.YYYY'), TO_DATE('01.01.2007', 'DD.MM.YYYY'))
/
COMMIT
/
т.е. нужен результат:
ID D1 D2
-- ---------- ----------
1 01.01.2000
1 01.01.2001
2 01.01.2000
2 01.01.2004
3 01.01.2000
3 01.01.2002 01.01.2004
3 01.01.2007
4 01.01.2000
4 01.01.2007