날짜 범위 사이에 값이 0인 누락된 날짜 검색
원래 쿼리에서는 두 날짜 사이의 데이터를 검색했지만 누락된 날짜는 제외했습니다. 누락된 날짜를 포함하고 누락된 데이터에 0 값을 할당하려면 "날짜 플래그 지정"이라는 기술을 활용할 수 있습니다.
누락된 날짜 플래그 지정
재귀 공통 테이블 표현식(CTE)을 사용하여 지정된 범위 내에서 일련의 날짜를 생성할 수 있습니다. d라는 CTE는 범위의 첫 번째 날짜부터 시작하여 종료 날짜에 도달할 때까지 하루를 반복적으로 추가합니다.
;with d(date) as ( select cast('10/01/2012' as datetime) union all select date+1 from d where date < '10/15/2012' )
기존 데이터와 결합
다음으로 CTE d와 원래 데이터 테이블 temp(t) 사이에 왼쪽 외부 조인을 수행하여 각 날짜에 대한 기존 데이터를 검색합니다. temp에 날짜가 있으면 해당 값이 사용됩니다. 그렇지 않으면 0으로 대체됩니다.
select t.ID, d.date CDate, isnull(t.val, 0) val from d left join temp t on t.CDate = d.date order by d.date OPTION (MAXRECURSION 0) -- use this if your dates are >99 days apart
MAXRECURSION에 대한 참고 사항
OPTION(MAXRECURSION 0) 절은 날짜 범위가 다음과 같은 경우 과도한 재귀로 인해 쿼리가 실패하는 것을 방지합니다. 너무 큽니다. 특정 데이터 범위에 맞게 값을 조정할 수 있습니다.
이 기술을 사용하면 누락된 날짜를 포함하여 두 날짜 사이의 모든 날짜를 검색하는 동시에 누락된 값이 0으로 표시되도록 할 수 있습니다.
위 내용은 SQL 쿼리에서 누락된 날짜를 0 값으로 채우는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!