4

在此处输入图像描述

这是我的 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)>=sysdatethen i got the upcomming events。但我的问题是,当今天、明天和后天发生事件时,我将开始日期显示为“今天”(最小开始日期)。但是当明天到来时,我仍然将开始日期显示为上一个日期。因为最小开始日期是昨天。我想将明天的日期显示为开始日期。

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

4

2 回答 2

2

我不确定你为什么在这里使用 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
于 2013-09-10T05:29:20.310 回答
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;
于 2013-09-10T06:08:59.050 回答