如何使用oracle数据库日期表获取最小日期

时间:2013-09-10 05:23:25

标签: sql database oracle select oracle10g

enter image description here

这是我的SQL查询

select e.event_name,
    min(dt.start_date) as start_date,
    min(dt.start_date)||'-'||max(dt.end_date) as FromTo
from event e join
    date_table dt
on e.e_id = dt.e_id
group by e.event_name;

我希望得到推特活动。为此,我使用MAX(dt.end_date)>=sysdate然后我得到了upcomming事件。但我的问题是,当今天,明天和后天发生事件时,我将开始日期显示为“今天”(最短开始日期)。 但是当明天来临时,我仍然将开始日期显示为上次日期。因为最低开始日期是昨天。我想将明天日期显示为开始日期。

我应该如何更改我的代码?

2 个答案:

答案 0 :(得分:1)

我不确定你为什么在这里使用min / max。

如果你想看到接下来的10个即将发生的事件(从今天起),你可能想尝试这样的事情:

select * 
from (
    select  e.* , dt.start_date , dt.end_date
    from    event e , date_table dt 
    where   e.e_id = dt.e_id 
    and dt.start_date > sysdate 
    order by dt.start_date)
where rownum < 10

答案 1 :(得分:1)

只需添加where子句即可。

select e.event_name,
    min(dt.start_date) as start_date,
    min(dt.start_date)||'-'||max(dt.end_date) as FromTo
from event e join
    date_table dt
on e.e_id = dt.e_id
where dt.start_date >=sysdate
group by e.event_name;