WITH GeneratingDates AS
(
SELECT
GeneratedDate = @StartDate,
WeekDay = DATEPART(WEEKDAY, @StartDate)
UNION ALL
SELECT
GeneratedDate = DATEADD(DAY, 1, G.GeneratedDate),
WeekDay = DATEPART(WEEKDAY, DATEADD(DAY, 1, G.GeneratedDate))
FROM
GeneratingDates AS G
WHERE
G.GeneratedDate < @EndDate
)
SELECT
S1.CustumerId,S1.o2,G.GeneratedDate, DATEPART(WEEKDAY,G.GeneratedDate),/*DATEADD(day,DATEDIFF(DAY,S1.o2,*/LAG(G.GeneratedDate) OVER (ORDER BY G.GeneratedDate)/*),G.GeneratedDate)*/
FROM
GeneratingDates AS G
INNER JOIN @WeekDays AS W ON G.WeekDay = W.WeekDayNumber
LEFT JOIN Holiday AS H ON H.DateH = G.GeneratedDate
RIGHT JOIN (SELECT DISTINCT o1.CustumerId ,DATEADD(day,p.Days,(SELECT MAX(OrderDate) FROM Orders o2 WHERE o1.CustumerId=o2.CustumerId)) o2 FROM Orders o1 INNER JOIN Periodicity p ON p.CustomerId = o1.CustumerId) S1 ON S1.o2 = G.GeneratedDate
WHERE H.DateH IS NULL
Смотрите, там где закаментирыванно, там мне нужно выбрать следуйщую дату из статически сгенерированной таблицы вычислить кол-во дней, и прибавить к значению, в коде все описано, вопрос очень интерестный, что я не так делаю?)
rPman, смотри, условно выпадает два нала подряд, следственно, если мы будем добовлять либо 0 либо 1, то условно если мы попадем на субботу, то выпадет воскресенье и тоже не вариант..(