SELECT TO_CHAR (BASE_MON + LEVEL - 1, 'YYYYMMDD') TODAY,
TO_CHAR (BASE_MON + LEVEL - 1, 'dd') DD,
TO_CHAR (BASE_MON + LEVEL - 1, 'd') D,
CASE
WHEN TO_CHAR (BASE_MON + LEVEL - 1, 'd') = 7 THEN '토'
WHEN TO_CHAR (BASE_MON + LEVEL - 1, 'd') = 6 THEN '금'
WHEN TO_CHAR (BASE_MON + LEVEL - 1, 'd') = 5 THEN '목'
WHEN TO_CHAR (BASE_MON + LEVEL - 1, 'd') = 4 THEN '수'
WHEN TO_CHAR (BASE_MON + LEVEL - 1, 'd') = 3 THEN '화'
WHEN TO_CHAR (BASE_MON + LEVEL - 1, 'd') = 2 THEN '월'
WHEN TO_CHAR (BASE_MON + LEVEL - 1, 'd') = 1 THEN '일'
ELSE ''
END AS YOIL,
TO_CHAR (BASE_MON + LEVEL - 1 + 1, 'iw') WK
FROM (
-- 해가 바뀌면 정확한 월을 찾아가기 위함 포함
SELECT TO_DATE( DECODE( SUBSTRB( TO_CHAR( SYSDATE, 'YYYYMM' )-1, 5, 6 ), '00', TO_CHAR( SYSDATE, 'YYYY' ) - 1 || '12', TO_CHAR( SYSDATE, 'YYYYMM' )-1 ), 'YYYYMM' ) BASE_MON
FROM DUAL ) CONNECT BY BASE_MON + LEVEL - 1 <= LAST_DAY(BASE_MON)
[CONNECT BY]
1. CONNECT BY 를 쓰는 순간 무한 LEVEL이 생김
SELECT LEVEL
FROM DUAL
CONNECT BY LEVEL <= 1000000;
SELECT TO_DATE('20110101','YYYYMMDD') + LEVEL - 1
FROM DUAL
CONNECT BY LEVEL <= 31
[출처] 오라클 CONNECT BY 정리입니다.|작성자 wscellbox
※ 이 글은 개인적인 공부를 위해 작성함을 알려드립니다.
| 2020년 1월 3일 IT - Oracle Table Alter (0) | 2020.01.03 |
|---|---|
| 2020년 1월 2일 IT - Oracle Loop (0) | 2020.01.02 |
| 2020년 1월 2일 IT - Oracle Pivot (0) | 2020.01.02 |
| 2020년 1월 2일 IT - SSL (0) | 2020.01.02 |
| 2020년 1월 2일 IT - Oracle Table Space 조회 (0) | 2020.01.02 |
댓글 영역