在oracle中获取上一次出现和下一次出现

时间:2013-08-14 07:39:37

标签: oracle

您好我正在研究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的情况下使用任何方法。使用常规选择查询?提前致谢

2 个答案:

答案 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 ;