这是我的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事件。但我的问题是,当今天,明天和后天发生事件时,我将开始日期显示为“今天”(最短开始日期)。
但是当明天来临时,我仍然将开始日期显示为上次日期。因为最低开始日期是昨天。我想将明天日期显示为开始日期。
我应该如何更改我的代码?
答案 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;