SELECT CASE
WHEN sdate < TO_DATE (:s_date, 'YYYYMMDD') THEN TO_DATE (:s_date, 'YYYYMMDD')
ELSE sdate
END
t1
, CASE
WHEN sdate + 6 > TO_DATE (:e_date, 'YYYYMMDD') THEN TO_DATE (:e_date, 'YYYYMMDD')
ELSE sdate + 6
END
t2
, CASE
WHEN TO_NUMBER (TO_CHAR (TO_DATE (:s_date, 'YYYYMMDD'), 'D')) < 5 THEN TO_CHAR (sdate, 'MM')
ELSE TO_CHAR (sdate + 6, 'MM')
END
|| '월 '
|| TO_CHAR (TRUNC (sdate, 'IW') + 5, 'W')
|| '주차'
AS ju
FROM ( SELECT TRUNC (TO_DATE (:s_date, 'YYYYMMDD'), 'IW')
- CASE
WHEN TO_NUMBER (TO_CHAR (TO_DATE (:s_date, 'YYYYMMDD'), 'D')) < 5 THEN 4
ELSE -3
END
+ (LEVEL - 1) * 7
AS sdate
FROM DUAL
CONNECT BY LEVEL <= CEIL ( (TO_DATE (:e_date, 'YYYYMMDD') - TO_DATE (:s_date, 'YYYYMMDD') + 1) / 7));
오라클 클럽에 올라왔던 질문에 본인이 작성한 쿼리이다.
여기서는 목요일을 기준으로 한 주가 시작되는 것으로 작성하였다.
최신 댓글