gpt4 book ai didi

sql - Oracle - 仅返回最早日期当前或将来的日期

转载 作者:行者123 更新时间:2023-12-04 20:31:26 25 4
gpt4 key购买 nike

假设我有一个“机会”表(机会可以有多个截止日期),如下所示:

机会

id    opp_id    deadline
---------------------------
1 40 20-Jan-2016
2 40 13-Jan-2016
3 40 20-Apr-2016
4 40 13-Apr-2016
5 73 29-Sep-2015
6 95 11-Dec-2016

假设今天的日期是15-Jan-2016,应该返回的是:

id    opp_id    deadline
---------------------------
6 95 11-Dec-2016

但是,如果我们假设今天的日期是 2015 年 12 月 16 日,我期望收到的行是:

id    opp_id    deadline
---------------------------
1 40 20-Jan-2016
2 40 13-Jan-2016
3 40 20-Apr-2016
4 40 13-Apr-2016
6 95 11-Dec-2016

基本上,逻辑是在所有截止日期都在今天或将来的情况下获得这些机会。我仍然可以申请这些机会,因为我仍然可以在截止日期前完成。

我该如何去做呢?

编辑

我想我还应该澄清,如果某个机会的最后期限已过,我不想获得该特定机会的其余最后期限。基本上,如果最早的截止日期已过,我不想为此机会检索任何内容。

最佳答案

一种方法使用分析函数:

select o.*
from (select o.*, min(deadline) over (partition by opp_id) as min_deadline
from opportunities o
) o
where min_deadline >= sysdate;

您也可以使用 not contains 来执行此操作;

select o.*
from opportunities o
where not exists (select 1
from opportunities o2
where o2.opp_id = o.opp_id and o2.deadline < sysdate
);

关于sql - Oracle - 仅返回最早日期当前或将来的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34321370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com