sql - 比较特定位置的两个日期之间的日期
问题描述
给定表中的以下示例记录: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 值数据。
解决方案
这似乎很奇怪。我在想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;
推荐阅读
- java - 处理 Java 中的 OutOfMemory 错误
- google-chrome-extension - Chrome 扩展 - 如何将变量传递给新标签?
- upgrade - 材料 v2.0.0-alpha.8-2 是否支持 Angular 版本 6?
- r - 用虚线连接多个方面的多个点
- javascript - 续集调用结构
- javascript - 在节点 js 中使用 promise 时函数工作不正确
- javascript - VueJS router-link ctrl+click 带有标签元素的链接
- javascript - 获取文本“
- " 带有 javascript 的标签
- javascript - 如何从.map返回对象数组
- javascript - 元掩码 web3 未定义