특정일자를 기준으로 7일씩 잘라서 n주차를 표시해주는 쿼리
개발관련/DB관련(Oracle) :
2023. 3. 26. 21:38
WITH CAL AS (
SELECT
BASE_YM
--,TODAY
,W1_START_DAY
,W1_END_DAY
,W2_START_DAY
,W2_END_DAY
,W3_START_DAY
,W3_END_DAY
,W4_START_DAY
,W4_END_DAY
,W5_START_DAY
,W5_END_DAY
,TO_DATE(W5_END_DAY, 'YYYYMMDD')-TO_DATE(W5_START_DAY, 'YYYYMMDD')+1 AS W5_DAY_DIFF
,TO_DATE(W5_END_DAY , 'YYYYMMDD')-TO_DATE(W1_START_DAY, 'YYYYMMDD')+1 AS MON_DAY_CNT
FROM (
SELECT
TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD') TODAY -- 해당일자
, TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMM')+1 AS BASE_YM -- 해당일자
, TO_CHAR(TO_DATE(TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD'), 'YYYYMMDD'), 'YYYYMMDD') AS W1_START_DAY -- 해당일자str
, TO_CHAR(TO_DATE(TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD'), 'YYYYMMDD')+(7*1)-1, 'YYYYMMDD') AS W1_END_DAY -- 해당일자str
, TO_CHAR(TO_DATE(TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD'), 'YYYYMMDD')+(7*1), 'YYYYMMDD') AS W2_START_DAY -- 해당일자str
, TO_CHAR(TO_DATE(TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD'), 'YYYYMMDD')+(7*2)-1, 'YYYYMMDD') AS W2_END_DAY -- 해당일자str
, TO_CHAR(TO_DATE(TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD'), 'YYYYMMDD')+(7*2), 'YYYYMMDD') AS W3_START_DAY -- 해당일자str
, TO_CHAR(TO_DATE(TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD'), 'YYYYMMDD')+(7*3)-1, 'YYYYMMDD') AS W3_END_DAY -- 해당일자str
, TO_CHAR(TO_DATE(TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD'), 'YYYYMMDD')+(7*3), 'YYYYMMDD') AS W4_START_DAY -- 해당일자str
, TO_CHAR(TO_DATE(TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD'), 'YYYYMMDD')+(7*4)-1, 'YYYYMMDD') AS W4_END_DAY -- 해당일자str
, TO_CHAR(TO_DATE(TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD'), 'YYYYMMDD')+(7*4), 'YYYYMMDD') AS W5_START_DAY -- 해당일자str
, TO_CHAR(TO_DATE(TO_CHAR (FIRST_DAY + LEVEL - 1, 'YYYYMMDD'), 'YYYYMMDD')+(7*4)-1, 'YYYYMM')||'25' AS W5_END_DAY -- 해당일자str
FROM (SELECT TO_DATE('20230101') AS FIRST_DAY FROM DUAL)
WHERE TO_CHAR (FIRST_DAY + LEVEL - 1, 'DD')='26'
CONNECT BY TO_DATE('20230201') + LEVEL + 1 <= TRUNC(LAST_DAY(TO_DATE('20230331', 'YYYYMMDD')))
) TBL
)
SELECT * FROM CAL;
반응형
'개발관련 > DB관련(Oracle)' 카테고리의 다른 글
오라클 숫자변환 오류처리 (0) | 2023.04.20 |
---|---|
오라클 달력으로 프로시저 반복문 처리 (0) | 2023.03.21 |
오라클 테이블, 컬럼, pk, comment, data type 조회 (0) | 2023.01.14 |
date 타입과 timestamp 타입 조회 (0) | 2022.09.23 |
튜닝 연습 (0) | 2021.10.30 |