[ORACLE]순번 채번 CONNECT BY LEVEL 활용하기

이경영·2023년 6월 1일
0

오라클

목록 보기
10/43
  • CONNECT BY START WITH : 상하관계를 질의하는 쿼리, 연속된 숫자를 조회할 때 활용함.
    현업에서는 보통 연속된 날짜를 조건으로 하는 쿼리를 조회할때 쓰는거 같다.

1~10 까지 연속된 숫자 조회

SELECT LEVEL AS NO 
FROM DUAL
CONNECT BY LEVEL <= 10

2020년 01월~12월까지 조회

SELECT '2020년'||LPAD(LEVEL, 2 , 0) ||'월' AS NO
FROM DUAL
CONNECT BY LEVEL <= 12;

이번달 날짜 조회하기

SELECT TRUNC(SYSDATE,'MM')+(ROWNUM-1) AS DAYS 
--TRUNC(SYSDATE, 'MM') AS 일초기화, 
--TRUNC(SYSDATE, 'MONTH')와 동일 = .
FROM DUAL
CONNECT BY LEVEL <= LAST_DAY(SYSDATE) - TRUNC(SYSDATE,'MM') ; 
--마지막날 - 초기화했으니 1일 + 1 까지 뽑아라.

매월 1일만 출력 (내가 현업에서 자주본 형식)

-- ADD_MONTHS(날짜, 숫자)를 이용해 숫자만큼 MONTH를 더함.
-- 마지막에는 TO_CHAR로 데이터포맷을 'YYYY-MM-DD'로 변경
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('202101', 'YYYYMM'), LEVEL - 1), 'YYYY-MM-DD') AS MONTH_LIST FROM DUAL
CONNECT BY LEVEL <= 12;
profile
꾸준히

0개의 댓글