> 데이터 베이스 > MySQL 튜토리얼 > SQL 쿼리에서 누락된 날짜를 0 값으로 채우는 방법은 무엇입니까?

SQL 쿼리에서 누락된 날짜를 0 값으로 채우는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-17 11:08:25
원래의
417명이 탐색했습니다.

How to Fill Missing Dates with Zero Values in SQL Queries?

날짜 범위 사이에 값이 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿