프리 정보 컨텐츠

oracle connect by level 예제와 활용 본문

DataBase/Oracle

oracle connect by level 예제와 활용

쏜스 2021. 12. 17. 13:35
반응형

connect by level과 rownum을 활용한 간단한 예제를 알아보자.

oracle에서 connect by level을 사용하면 원하는만큼의 행을 리턴할 수 있어서 

주로 날짜를 가져올 때 유용하게 사용한다.

 

select
    rownum,
    level as no
from
    dual
connect by
    level <= 10;

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);

Comments