SELECT * FROM (SELECT MOD(LEVEL - 1, 7) + 1 d , CEIL(LEVEL / 7) w , CASE WHEN LEVEL > LAST_DAY(dt) - dt + 1 THEN TO_CHAR(dt + LEVEL - 1, 'fmmm/dd') ELSE TO_CHAR(dt + LEVEL - 1, 'fmdd') END dd FROM (SELECT TRUNC(sysdate, 'd') dt FROM dual) CONNECT BY LEVEL <= 14 ) PIVOT (MIN(dd) FOR d IN (2 mon, 3 tue, 4 wed, 5 thu, 6 fri)) ;