티스토리 뷰

Oracle 에서 LEVEL 를 이용하여 여러 레코드를 만들고 연속된 일자를 만드는 것을 기록한다.
이 쿼리는 [일자별/개월별/년도별] 통계 데이터를 출력할 때 기준이 되는 값을 만들 때 사용하면 좋습니다.

-- 연속된 일자 구하기

SELECT *
  FROM (
    SELECT TO_CHAR(TO_DATE('20100101') + LEVEL -1, 'YYYYMMDD') AS IN_DATE
      FROM DUAL
     CONNECT BY LEVEL <= TO_DATE('20100201') - TO_DATE('20100101') + 1
       )



-- 연속된 개월 구하기
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('201001', 'YYYYMM'), LEVEL - 1), 'YYYYMM') as mm
FROM   DUAL CONNECT BY LEVEL <= MONTHS_BETWEEN ( TO_DATE(201008, 'YYYYMM'), TO_DATE('201001', 'YYYYMM') ) + 1 ;




-- 연속된 년도 구하기 (예: 98~04)
SELECT *
FROM   (SELECT LEVEL + 1998 - 1 FROM DUAL CONNECT BY LEVEL <= ( 2004 - 1998 ) + 1);

 

Oracle 9i 이상부터 됩니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday