比较两个日期之间在特定位置的日期

问题描述 投票:0回答:2

给出表中的以下示例记录:MY_DATES,使用Oracle SQL和/或PL / SQL,我需要始终获取此表中的第一个DATE_register,即26/10/2019,然后前进至第三个DATE_register记录/值,即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值数据。

任何有关如何实现这一目标的帮助都将非常有用。

鉴于表中的以下示例记录:MY_DATES,使用Oracle SQL和/或PL / SQL,我需要始终获取此表中的第一个DATE_register,即26/10/2019,然后前进到...] >

sql oracle plsql oracle12c
2个回答
0
投票

这似乎很奇怪。我在想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;

0
投票

这里是使用Oracle版本12.1中引入的MATCH_RECOGNIZE子句的有效解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.