首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果输入日期不可用,则如何获取oracle中开始日期和结束日期之间的输入日期,然后返回最大日期记录

如果输入日期不可用,则如何获取oracle中开始日期和结束日期之间的输入日期,然后返回最大日期记录
EN

Stack Overflow用户
提问于 2020-08-14 12:38:31
回答 1查看 84关注 0票数 1

请查找附件中的样本数据。场景1:如果我提供输入日期为“21-8月-20”,并且在两个aggrement_id中满足,那么我希望effective_end上的最大记录被取下来。即abcd.场景2:如果我提供了一个日期‘26-8月-20’并且在任何行中都不令人满意,那么它应该返回最大有效结束日期记录。abce.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-14 15:50:43

我提取了相同的数据,并从中创建了一个表demo。请参阅[医]小提琴

你能试试下面的查询吗?

代码语言:javascript
复制
WITH data AS
 (SELECT DATE '2020-08-14' input FROM dual) --input parameter 
SELECT arng_id,st_dt,end_dt
FROM   (SELECT input
              ,demo.*
              ,MAX(end_dt) over(ORDER BY NULL) max_dt --taken max(end_dt) to match in case no result with input parameter
        FROM   demo
              ,data)
WHERE  (input BETWEEN st_dt AND end_dt)  -- matches with input paramater OR
OR     (max_dt BETWEEN end_dt AND input) -- condition when no result with first match 
ORDER  BY end_dt DESC -- order by require to fetch the max record always
FETCH  FIRST 1 ROW ONLY --oracle 12c feature

使用11g,我们可以使用ROWNUM。请参阅[医]小提琴

注意:当提供的输入小于max(end_dt)且与任何行不匹配时,我没有考虑这种情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63412917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档