首页 > 解决方案 > 比较特定位置的两个日期之间的日期

问题描述

给定表中的以下示例记录:MY_DATES,使用 Oracle SQL 和/或 PL/SQL,我需要始终获取此表中的第一个 DATE_REGISTERED,即 26/10/2019,然后前进到第三个 DATE_REGISTERED 记录/值,即 2/02/2020 并检查它们之间的差异是否大于 13 周,即

select to_date('2/02/2020','dd/mm/yyyy') - to_date('26/10/2019','dd/mm/yyyy') a from dual

Table Name: MY_DATES

NM  DATE_REGISTERED
--- ---------------
A1  26/10/2019
A1  2/11/2019
A1  2/02/2020
A1  9/02/2020
A1  16/02/2020
A1  23/02/2020
A1  1/03/2020
A1  8/03/2020

此练习的最终结果是返回满足此条件的不同 NM 值数据。

标签: sqloracleplsqloracle12c

解决方案


这似乎很奇怪。我在想lead()lag)。如果您想要nm满足条件的值:

select md.*
from (select md.*,
             lead(date_registered, 2) over (partition by nm order by date_registered) as next_dr_2,
             lag(date_registered) over (partition by nm order by date_registered) as prev_dr
      from my_dates md
     ) md
where prev_dr is null and
      next_dr_2 > date_registered + interval '91' day;

推荐阅读