2013-08-14 2 views
3

안녕하세요 Oracle DB에서 작업하고 있습니다. DB에는 한 컬럼 날짜가 있습니다. 모델이 갱신 될 5 년의 날짜로 구성됩니다. 예oracle에서 이전 발생 및 다음 발생 발생

DATE_TABLE 

DATE 
------------ 
1-jan-2013 
15-jan-2013 
31-jan-2013 
6-feb-2013 
etc......... 

13th jan 2013을 가정 해 봅시다. 다음 새로 고침 날짜는 15th jan입니다. 이전 새로 고침 날짜는 1st jan입니다. 이 두 날짜를 검색 할 수 있습니다. PL/SQL을 사용하지 않고 어떤 방법으로도 사용할 수 있습니까? 정기적 인 선택 쿼리를 사용합니까?. 미리 감사드립니다

답변

1

우리는 단순히 평범하고 단순하게 아래의 쿼리를 사용할 수 있습니다 여기에 예입니다. 11g 전에 도입 없음 PL/SQL의 필요성

SELECT MIN(DATE) FROM DATE_TABLE WHERE DATE > SYSDATE ; 
4

LAG() (이전 레코드를 참조 할 수 있음) 및 LEAD()은 다음 레코드를 참조 할 수 있습니다.

SQL> with t1(col) as(
    2 select '1-jan-2013' from dual union all 
    3 select '15-jan-2013' from dual union all 
    4 select '31-jan-2013' from dual union all 
    5 select '6-feb-2013' from dual 
    6 ) 
    7 select col       as current_value 
    8  , lag(col, 1) over(order by col) as prev_value 
    9  , lead(col, 1) over(order by col)as next_value 
10 from t1 
11 ; 

결과 :

CURRENT_VALUE PREV_VALUE NEXT_VALUE 
------------- ----------- ----------- 
1-jan-2013  NULL   15-jan-2013 
15-jan-2013  1-jan-2013 31-jan-2013 
31-jan-2013  15-jan-2013 6-feb-2013 
6-feb-2013  31-jan-2013 NULL 
+0

리드()과 지연() 함수, http://www.cs.utexas.edu/~cannata/dbms/Analytic%20Functions%20in%20Oracle%208i % 20and % 209i.htm – ajmalmhd04

+0

@ ajmalmhd04 예. 수정 해줘서 고마워. –