SELECT TA.*
, ROWNUM AS 월주차
, TO_NUMBER(TO_CHAR(TO_DATE('201802'||
GREATEST(LPAD(NVL(TA.일,'00'),2,'0')
, LPAD(NVL(TA.월,'00'),2,'0')
, LPAD(NVL(TA.화,'00'),2,'0')
, LPAD(NVL(TA.수,'00'),2,'0')
, LPAD(NVL(TA.목,'00'),2,'0')
, LPAD(NVL(TA.금,'00'),2,'0')
, LPAD(NVL(TA.토,'00'),2,'0'))
,'YYYYMMDD')+1, 'iw')) AS 년주차
FROM (SELECT MIN (DECODE (TO_CHAR(ym + LEVEL - 1, 'd'), '1', LEVEL)) 일,
MIN (DECODE (TO_CHAR(ym + LEVEL - 1, 'd'), '2', LEVEL)) 월,
MIN (DECODE (TO_CHAR(ym + LEVEL - 1, 'd'), '3', LEVEL)) 화,
MIN (DECODE (TO_CHAR(ym + LEVEL - 1, 'd'), '4', LEVEL)) 수,
MIN (DECODE (TO_CHAR(ym + LEVEL - 1, 'd'), '5', LEVEL)) 목,
MIN (DECODE (TO_CHAR(ym + LEVEL - 1, 'd'), '6', LEVEL)) 금,
MIN (DECODE (TO_CHAR(ym + LEVEL - 1, 'd'), '7', LEVEL)) 토
FROM (SELECT TO_DATE ('201802', 'YYYYMM') ym FROM DUAL)
CONNECT BY LEVEL <= LAST_DAY(ym) - ym + 1
GROUP BY TRUNC (ym + LEVEL, 'iw')
ORDER BY 토
) TA
;
- 프로그램 작업시 빨강글씨에 변수값으로 년월만 던지면 됨.
- 월주차,년주차 추가..
'DB-Oracle' 카테고리의 다른 글
oracle CONNECT BY 계층구조 쿼리에 대한 이해 (0) | 2022.12.01 |
---|---|
oracle DB 리스너 IP 및 포트 변경 법 (0) | 2022.12.01 |
AWS RDS - 옵티마이져 설정chk 관리 (0) | 2022.11.29 |
AWS RDS - TimeZone 설정 (0) | 2022.11.29 |
AWS RDS - DB Link script (0) | 2022.11.29 |