-- 입력된 월 기준
SELECT
ADDDATE(A.SETMONTH, LEVEL -1) AS DT,
TO_CHAR(ADDDATE(A.SETMONTH, LEVEL -1), 'DAY') AS SW,
CONCAT(DENSE_RANK() OVER(ORDER BY TRUNC(ADDDATE(A.SETMONTH, LEVEL -1), 'DAY')), ' 주차') AS MBWK
FROM (
SELECT
TO_DATE('201601','YYYYMM') AS SETMONTH
) A
CONNECT BY
LEVEL <= EXTRACT(DAY FROM LAST_DAY(A.SETMONTH))
결과>
2016-01-01 금요일 1 주차
2016-01-02 토요일 1 주차
2016-01-03 일요일 2 주차
2016-01-04 월요일 2 주차
2016-01-05 화요일 2 주차
2016-01-06 수요일 2 주차
2016-01-07 목요일 2 주차
2016-01-08 금요일 2 주차
2016-01-09 토요일 2 주차
2016-01-10 일요일 3 주차
2016-01-11 월요일 3 주차
2016-01-12 화요일 3 주차
2016-01-13 수요일 3 주차
2016-01-14 목요일 3 주차
2016-01-15 금요일 3 주차
2016-01-16 토요일 3 주차
2016-01-17 일요일 4 주차
2016-01-18 월요일 4 주차
2016-01-19 화요일 4 주차
2016-01-20 수요일 4 주차
2016-01-21 목요일 4 주차
2016-01-22 금요일 4 주차
2016-01-23 토요일 4 주차
2016-01-24 일요일 5 주차
2016-01-25 월요일 5 주차
2016-01-26 화요일 5 주차
2016-01-27 수요일 5 주차
2016-01-28 목요일 5 주차
2016-01-29 금요일 5 주차
2016-01-30 토요일 5 주차
2016-01-31 일요일 6 주차
-- 입력된 두개의 날짜 기준
SELECT
ADDDATE(A.ST_DAY, LEVEL - 1) AS DT,
TO_CHAR(ADDDATE(A.ST_DAY, LEVEL - 1), 'DAY') AS SW,
CONCAT(TO_CHAR(ADDDATE(A.ST_DAY, LEVEL - 1), 'YYYY'), '년 ', TO_CHAR(ADDDATE(A.ST_DAY, LEVEL - 1), 'MM'), '월 ', DENSE_RANK() OVER(PARTITION BY MONTH(ADDDATE(A.ST_DAY, LEVEL - 1)) ORDER BY TRUNC(ADDDATE(A.ST_DAY, LEVEL - 1), 'DAY')), ' 주차') AS MBWK
FROM (
SELECT
TO_DATE('2016-08-01') AS ST_DAY,
TO_DATE('2016-08-09') AS ED_DAY
)
A
CONNECT BY
LEVEL
<= DATEDIFF(ED_DAY, ST_DAY)
결과>
2016-08-01 월요일 2016년 08월 1 주차
2016-08-02 화요일 2016년 08월 1 주차
2016-08-03 수요일 2016년 08월 1 주차
2016-08-04 목요일 2016년 08월 1 주차
2016-08-05 금요일 2016년 08월 1 주차
2016-08-06 토요일 2016년 08월 1 주차
2016-08-07 일요일 2016년 08월 2 주차
2016-08-08 월요일 2016년 08월 2 주차
입력된 두개의 날짜 기준에는 버그가 있네요;; (동일 월에만 가능합니다.)