У меня есть список дат в таблице. Для этого примеры 1-го числа каждого месяца. Давайте назовем его табличным периодом времени со столбцом endTime
endTime
1-1-2019
2-1-2019
3-1-2019
4-1-2019
Я хочу найти в списке все даты x количество дней после каждой даты. Допустим, x = 4. Тогда список должен быть:
1-1-2019
1-2-2019
1-3-2019
1-4-2019
2-1-2019
2-2-2019
2-3-2019
2-4-2019
3-1-2019
3-2-2019
3-3-2019
3-4-2019
4-1-2019
4-2-2019
4-3-2019
4-4-2019
Я нашел решения, чтобы найти все даты между датами, но я продолжаю получать "Подзапрос вернул более 1 значения" ошибка когда я пытаюсь использовать его со списком дат.
Вот пример того, что я пробовал, но не работает
declare @days DECIMAL = 4
declare @StartDate date = (select convert(varchar, DATEADD(Day, +0, endTime),101) from timeperiod
declare @EndDate date = (select convert(varchar, DATEADD(Day, +@days, endTime),101) from timeperiod;
;WITH cte AS (
SELECT @StartDate AS myDate
UNION ALL
SELECT DATEADD(day,1,myDate) as myDate
FROM cte
WHERE DATEADD(day,1,myDate) <= @EndDate
)
SELECT myDate
FROM cte
OPTION (MAXRECURSION 0)