WITH TT AS( SELECT 1 SEQ, '20140101' FRDT, '20141020' TODT, '20150930' CHKDT FROM DUAL UNION ALL SELECT 2 SEQ, '20141201', '20150710', '20150315' FROM DUAL ) SELECT * FROM ( SELECT SEQ , FRDT , CHKDT AS TODT FROM TT UNION ALL SELECT SEQ , TO_CHAR(TO_DATE(CHKDT, 'YYYYMMDD')+1, 'YYYYMMDD') FRDT , TODT FROM TT) AA ORDER BY AA.SEQ, AA.FRDT
WITH TT AS( SELECT '2012.01.01' SDATE , '2014.10.20' EDATE , '2013.09.30' PDATE FROM DUAL ) select * from( select max(sdate||'~'||pdate) d1,max(to_char(to_date(pdate,'yyyy.mm.dd')+1 , 'yyyy.mm.dd') ||'~'||edate) d2 from tt , (select level lv from dual connect by level <= 2) ) unpivot ( dt for seq in (d1 as 1 , d2 as 2))