首页 > 解决方案 > 计算 Oracle 中每个 ID 列的两个最近日期之间的天数

问题描述

我有一张这样的桌子:

ID Submitted Date
0000120-JUL-2018
0000117-MAR-2017
0000120-JUN-2019
0000220-JUL-2018
0000222-AUG-2018
0000223-APR-2019

我想计算每个 ID 的最近两个提交日期之间的天数。

ID = 00001一样,天数应为20-JUN-2019 - 20-JUL-2018

我正在使用 Oracle 11G。

标签: sqloracledatediff

解决方案


一种方法使用lag()and lead()

select t.*,
       (submitted_date - prev_sd) as day_diff
from (select t.*,
             lag(submitted_date) over (partition by id order by submitted_date) as prev_sd,
             lead(submitted_date) over (partition by id order by submitted_date) as next_sd
      from t
     ) t
where next_sd is null;

这种方法避免了任何聚合。


推荐阅读