Для актуальных Oracle версий:
SELECT *
FROM t1,
lateral(
select level N,
t1.startdate+level-1 dt
from dual
connect by level <= t1.enddate - t1.startdate + 1
);
или
SELECT
startdate,
enddate,
startdate+n as DT
FROM t1,
xmltable('0 to xs:integer(.)'
passing cast(enddate-startdate as number)
columns n int path '.'
)
Полные примеры:
with t1
AS (
SELECT DATE '2020-1-31' AS startdate,
DATE '2020-2-3' AS enddate
FROM dual
UNION
SELECT DATE '2020-2-27' AS startdate,
DATE '2020-3-3' AS enddate
FROM dual
)
SELECT *
FROM t1,
lateral(
select level N,
t1.startdate+level-1 dt
from dual
connect by level <= t1.enddate - t1.startdate + 1
);
with t1
AS (
SELECT DATE '2020-1-31' AS startdate,
DATE '2020-2-3' AS enddate
FROM dual
UNION
SELECT DATE '2020-2-27' AS startdate,
DATE '2020-3-3' AS enddate
FROM dual
)
SELECT
startdate,
enddate,
startdate+n as DT
FROM t1,
xmltable('0 to xs:integer(.)'
passing cast(enddate-startdate as number)
columns n int path '.'
);