티스토리 뷰
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 이상부터 됩니다.
'지식정보' 카테고리의 다른 글
오라클 분석함수 중 랭킹 함수 RANK, DENSE_RANK, ROW_NUMBER 등등 (0) | 2010.07.28 |
---|---|
오라클에서 여러 레코드 만들기 (0) | 2010.07.28 |
ORACLE SYSTIMESTAMP 사용예 (0) | 2010.06.29 |
sitecopy 설치 및 사용법 (0) | 2010.06.25 |
지긋지긋한 미디어랜드의 TCO Client 삭제법 (1) | 2010.06.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday