1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
WITH CTE AS (
SELECT
@date_init as dte
,COALESCE(
(SELECT 0
FROM CALEND_DAY
WHERE [Cal_Code] = 'Calendrier général'
AND [Calday_date] = @date_init
)
, 1
) d
UNION ALL
SELECT
DATEADD(DAY, COALESCE(NULLIF(SIGN(@delai),0),1), dte)
, CTE.d
+ COALESCE(
(SELECT 0
FROM CALEND_DAY
WHERE [Cal_Code] = 'Calendrier général'
AND [Calday_date] = DATEADD(DAY, COALESCE(NULLIF(SIGN(@delai),0),1), dte)
)
, 1
)
FROM CTE
WHERE CTE.d <= ABS(@delai)
)
SELECT *--CASE WHEN @delai > 0 THEN MAX(dte) ELSE MIN(dte) END
FROM CTE
; |
Partager