您好我正在研究oracle DB。 DB有一个列日期。它包含5年的日期,日期模型将刷新。实施例
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的情况下使用任何方法。使用常规选择查询?提前致谢
答案 0 :(得分: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
答案 1 :(得分:1)
我们可以简单地使用以下查询,简单明了。不需要pl / sql
SELECT MIN(DATE) FROM DATE_TABLE WHERE DATE > SYSDATE ;