본문 바로가기

DB/Oracle

연속되는 숫자 만들기

쿼리를 만들다가 일정 기간동안 데이터를 가져올 일이 생겼다.

그러다가 우현이 LEVEL에 대해 알게 됬다. 참 쓰임새가 다양한 것이 되겠다.

LEVEL로 먼저 필요한 기간을 구한다. 본인은 오늘로 부터 50일 전까지 날짜를 구한다. 오늘 날짜 제외

SELECT TO_NUMBER(TO_CHAR(SYSDATE - LEVEL,'YYYYMMDD')) USE_DAY

FROM DUAL

START WITH LEVEL = 1

CONNECT BY LEVEL <= 50


이제 기간의 최소,최대를 구한다. 이정도면 다들 응용가능하실거 같다.
SELECT TO_DATE(MIN(USE_DAY),'YYYYMMDD') S_DAY, TO_DATE(MAX(USE_DAY),'YYYYMMDD') E_DAY
FROM (
    SELECT TO_NUMBER(TO_CHAR(SYSDATE - LEVEL,'YYYYMMDD')) USE_DAY
    FROM DUAL
    START WITH LEVEL = 1
    CONNECT BY LEVEL <= 50
)

왜 이런 이상한 방법을 쓰는지 본인에게 다시 되물어보지만, 여러가지 해결 방법중 하나이다.
DB에서 특정 기간동안의 데이터를 가져오는데 사용하지만 현재 용도는 그게 아니다.;;
좀더 복잡한 이유가 있지만 중요한 기능이 이거다.

새삼스럽게 느끼지만, 시작은 단순하지만 끝은 언제나 복잡하다....


'DB > Oracle' 카테고리의 다른 글

오라클 포트 설정하기  (0) 2014.05.21
한글 - 알파벳 - 숫자 순으로 정렬  (0) 2013.07.29
D-DAY 계산  (0) 2013.01.17
오라클 ORA-01476 에러  (0) 2011.11.11
한글 초성 검색  (0) 2011.05.23