计数"活跃"对于SQL Server中日历的每个日期

时间:2015-10-05 17:19:15

标签: sql-server date count between

我有两张桌子:

一个是临时日历表"表1"所有日期都在2012-01-01和今天之间。

 Date
 ----------       
 2012-01-01
 2012-01-02
 .....
 2015-10-04
 2015-10-05  

第二是"表2"使用DateStart和DateEnd。

 DateStart   |  DateEnd
 -------------------------
 2013-03-31  |  2013-04-30
 2013-02-01  |  2014-02-01
 2014-10-10  |  2015-01-10
 .....
 2015-03-06  |  2015-04-06

我想设计一个查询,对于第一个表中的每个日期,计算此日期在DateStart和DateEnd之间的次数。

我会得到类似的东西:

 Date        |  Occurrence
 ------------|------------    
 2012-01-01  |     0
 2012-01-02  |     0
 .....       
 2013-04-29  |     2
 2013-04-30  |     2
 2013-05-01  |     1
 2013-05-02  |     1
 .....
 2015-04-05  |     1
 2015-04-06  |     1
 2015-04-07  |     0

非常感谢!

1 个答案:

答案 0 :(得分:1)

SELECT dt.date,COUNT(distinct bt.ID) 
FROM Dates_table dt 
LEFT JOIN batch_table bt ON dt.date between bt.start_date and bt.end_date
GROUP BY dt.date