2015-10-05 3 views
0

У меня есть 2 таблицы:Подсчет количества «активных» для каждой даты календаря в SQL Server

Одним из них является временный календарь таблицы «Table1» со всеми датами между 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
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 
+0

Спасибо, Люк! Мне удалось адаптировать решение к моей проблеме, и, похоже, она работает. –

+0

Ницца, вы можете разместить свое решение для всех, у кого есть эта проблема – Luc

Смежные вопросы