我有这个SQL表有三列,
startdate enddate volume
2015-01-05 2015-01-12 50
2015-01-10 2015-01-15 20
现在我想总计每个日历日的总量, 我以为我建立了一张日历表,然后每天我都会
select sum(volume) as volsum
group by calendar.date
获取
date volsum
2015-01-01 50
2015-01-02 50
...
...
...
2015-01-10 70
...
...
2015-01-15 20
但我不知道如何加入这两张桌子。有什么想法吗?
谢谢!
答案 0 :(得分:0)
您希望将日历表用作日期源,并使用左连接从日历表中获取所有日期,即使该日期的卷没有数据也是如此。这样做:
select
calendar.date, sum(volume) as volsum
from
calendar
left join
your_table t on calendar.date >= t.startdate
and calendar.date <= t.enddate
group by
calendar.date
如果要限制从日历表返回的日期,可以添加where
子句,如:
where calendar.date >= (select MIN(startdate) from your_table)
and calendar.date <= (select MAX(enddate) from your_table)