计算SQL服务器中日历每个日期的"active"个数
Count number of "active" for each date of a calendar in SQL Server
我有 2 个 tables:
一个是临时日历 table "Table1" 所有日期都在 2012-01-01 和今天之间。
Date
----------
2012-01-01
2012-01-02
.....
2015-10-04
2015-10-05
第二个是 "Table2",具有 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
我想设计一个查询,对于第一个 table 中的每个日期,计算该日期在 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
非常感谢!
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
我有 2 个 tables:
一个是临时日历 table "Table1" 所有日期都在 2012-01-01 和今天之间。
Date
----------
2012-01-01
2012-01-02
.....
2015-10-04
2015-10-05
第二个是 "Table2",具有 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
我想设计一个查询,对于第一个 table 中的每个日期,计算该日期在 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
非常感谢!
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