oracle之获取oracle中的上一次出现和下一次出现

mfryf 阅读:16 2024-11-01 17:39:52 评论:0

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

请您参考如下方法:

有两个功能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 


标签:oracle
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号