从事件表中,我按日计算分组事件,为此我使用
SELECT event_date, COUNT(event_id) event_count FROM events
WHERE event_date >= TRUNC(SYSDATE-1, 'DD')
GROUP BY event_date
ORDER BY event_date
我的问题是这只会返回这些天,某些事件在哪里
2017-04-03,4 2017-04-05,2
但我需要连续几天从昨天到下一个30天,并从我的分组事件数据填写这几天,如下
2017-03-31,
2017-04-01,
2017-04-02,
2017-04-03,4通
2017-04-04,
2017-04-05,2通
2017-04-06,
...接下来30天(当我的表中存在事件时事件计数)
...
怎么做?感谢您的帮助
答案 0 :(得分:3)
因此,您可以从昨天起生成接下来的30天(请参阅第一个子查询),然后只需left join
生成现有查询。
试试这个:
select all_days.days , certain_days.event_count from (
select TRUNC( sysdate + level - 2, 'DD') as days from DUAL connect by level <= 30
) all_days
left join (
SELECT event_date, COUNT(event_id) event_count FROM events
WHERE event_date >= TRUNC(SYSDATE-1, 'DD')
GROUP BY event_date
) certain_days
on all_days.days = certain_days.event_date
order by all_days.days