connect by level과 rownum을 활용한 간단한 예제를 알아보자.
oracle에서 connect by level을 사용하면 원하는만큼의 행을 리턴할 수 있어서
주로 날짜를 가져올 때 유용하게 사용한다.
select
rownum,
level as no
from
dual
connect by
level <= 10;
-- 현재년 1월부터 12월까지 달 출력
select
to_char(sysdate, 'yyyy') || '년 ' || lpad(level, 2, 0) || '월' Y_M
from
dual
connect by
level <= 12;
-- 특정 날짜 구간 조회
select
V_DATE
from
(
select
to_char(to_date('20211101', 'YYYY-MM-DD') + LEVEL - 1, 'YYYY-MM-DD') V_DATE
from
DUAL
connect by
LEVEL <= to_date('20211130', 'YYYY-MM-DD') - to_date('20211101', 'YYYY-MM-DD') + 1
);
-- connect by level 응용
select
trunc(sysdate, 'month') + (LEVEL - 1) as TDAY
from
DUAL
connect by
LEVEL <= (LAST_DAY(sysdate) - trunc(sysdate, 'month') + 1);