2017-04-01 68 views
0

從事件表,我得到分組活動由天數,爲此我使用如何按天填寫分組數據?

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年4月3日,4
2017年4月5日,2

,但我需要得到所有昨天連續兩天到接下來的30天,從我的分組事件填寫此天的數據,這樣

2017年3月31日,
2017年4月1日,
2017年4月2日,
2017年4月3日,4
2017年4月4日,
2017年4月5日, 2
2017年4月6日,
...未來30天(當事件在我的表中存在的事件計數) ...

如何做到這一點?感謝您的幫助

+0

你需要在表格接下來的30天,從昨天或最後日期接下來的30天內,你有嗎? –

+0

從昨天起30天后 – Nick

回答

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