SQL中每天的总量

时间:2015-03-16 14:51:57

标签: sql sql-server join

我有这个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

但我不知道如何加入这两张桌子。有什么想法吗?

谢谢!

1 个答案:

答案 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)