1
는 나는 내가 쿼리를 원 1978년 12월 22일CTE 쿼리 2 가지 조건이 작동하지 않습니까?
에서 태어났다 (CTE에!) 내가 내 생일 (날짜 부분 일 = 22)
declare @t0 datetime = '1978/12/22';
declare @t1 datetime = getdate();
with CTEE (val,day1)
AS
(
SELECT @t0,DATEPART(day,@t0)
UNION all
SELECT DATEADD(day,1,val) , DATEPART(day,day1) from ctee where(DATEADD(day,1,val) <[email protected]) and DATEPART(day,day1)=22
)
select val,day1 from CTEE OPTION (MAXRECURSION 20000)
이 저를 반환하는 것 같다 어떻게 이제까지 표시 1 행 (이유 : ???)
If I remove
and DATEPART(day,day1)=22
그래서 나는 모든 날을 살아있게합니다.
내가 찾은 해결책은 이것이다 :
declare @t0 datetime = '1978/12/22';
declare @t1 datetime = getdate();
with CTEE (val,day1)
AS
(
SELECT @t0,DATEPART(day,@t0)
UNION all
SELECT DATEADD(day,1,val) , DATEPART(day,day1) from ctee where(DATEADD(day,1,val) <[email protected])
)
select val,day1 from CTEE where day1=22 OPTION (MAXRECURSION 20000)
하지만 내 질문은 그것이 작동하지 않는 이유 첫 번째 쿼리에서 입니까?