쿼리를 만들다가 일정 기간동안 데이터를 가져올 일이 생겼다.
그러다가 우현이 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 |