给出表中的以下示例记录: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,然后前进到...] >
这似乎很奇怪。我在想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;
这里是使用Oracle版本12.1中引入的MATCH_RECOGNIZE子句的有效解决方案。