Я пытаюсь определить, как выбрать строку для каждого месяца между периодом. Период будет иметь дату начала самого раннего месяца в таблице. Таким образом, в приведенном ниже примере начальный период будет 2016-01-01, но конечный период будет определяться пользователем, скажем, 2017-02-01. Мой стол:SELECT строка для каждого месяца между датами
rowID | Month | someDate | SomeOtherDate | Number
1 | 2016-01-01 | 2018-01-01 | 2018-01-01 | 0
2 | 2016-07-01 | 2019-03-01 | 2019-02-01 | 1
В результате я ищу это:
Month | someDate | SomeOtherDate | Number
2016-01-01 | 2018-01-01 | 2018-01-01 | 0
2016-02-01 | 2018-01-01 | 2018-01-01 | 0
2016-03-01 | 2018-01-01 | 2018-01-01 | 0
2016-04-01 | 2018-01-01 | 2018-01-01 | 0
2016-05-01 | 2018-01-01 | 2018-01-01 | 0
2016-05-01 | 2018-01-01 | 2018-01-01 | 0
2016-07-01 | 2019-03-01 | 2019-02-01 | 1
2016-08-01 | 2019-03-01 | 2019-02-01 | 1
2016-09-01 | 2019-03-01 | 2019-02-01 | 1
2016-10-01 | 2019-03-01 | 2019-02-01 | 1
2016-11-01 | 2019-03-01 | 2019-02-01 | 1
2016-12-01 | 2019-03-01 | 2019-02-01 | 1
2017-01-01 | 2019-03-01 | 2019-02-01 | 1
2017-02-01 | 2019-03-01 | 2019-02-01 | 1
По сути мне нужно дублировать строку до тех пор, пока не найдет другую строку или соответствует дата окончания периода, если другая строка затем дублирует эту строку до тех пор, пока не будет выполнен конечный период, при этом увеличивая значение месяца для каждой строки. Надеюсь, это имеет смысл.
Любая помощь была бы принята с благодарностью.
Вам нужна другая таблица календаря, наполненную всех даты. Вы можете заполнить его перед запросом или «на лету» с некоторыми CTE. Например http://stackoverflow.com/questions/5635594/how-to-create-a-calender-table-for-100-years-in-sql – xdd