>데이터 베이스 >MySQL 튜토리얼 >누락된 데이터에 대해 채워진 0 값으로 포괄적인 날짜 범위를 생성하는 방법은 무엇입니까?

누락된 데이터에 대해 채워진 0 값으로 포괄적인 날짜 범위를 생성하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-19 03:24:08431검색

How to Generate a Comprehensive Date Range with Populated Zero Values for Missing Data?

입력된 데이터로 포괄적인 날짜 범위 생성

데이터베이스에서는 특정 날짜 범위 내의 데이터를 검색해야 하는 경우가 많습니다. 그러나 특정 날짜에 대한 데이터가 누락된 경우 열을 비워 두는 대신 0을 표시하는 것이 유용할 수 있습니다. 이렇게 하면 전체 날짜 범위가 표시되어 데이터에 대한 보다 포괄적인 보기를 제공할 수 있습니다.

문제:

날짜 및 값 데이터가 포함된 테이블이 있고 필요한 사항이 있습니다. 지정된 범위 내의 모든 날짜를 검색합니다. 특정 날짜에 대한 행이 없으면 모든 열에 대해 0을 표시하려고 합니다.

해결책:

이는 다음을 사용하여 날짜 집합을 생성하여 달성할 수 있습니다. 재귀 공통 테이블 표현식(CTE)을 사용한 다음 기존 데이터 테이블과 왼쪽 조인을 수행합니다. CTE는 지정된 범위 내에서 일련의 날짜를 생성합니다. 왼쪽 조인은 생성된 날짜를 기존 행과 일치시키고 ISNULL() 함수를 사용하여 누락된 값을 0으로 채웁니다.

;with d(date) as (
  select cast('10/01/2012' as datetime)
  union all
  select date+1
  from d
  where date < '10/15/2012'
  )
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)

MAXRECURSION 옵션은 허용되는 최대 재귀 반복 횟수를 지정합니다. 이 경우 날짜 범위가 작기 때문에(15일) 0으로 설정하여 무제한 반복을 허용할 수 있습니다.

이 쿼리를 실행하면 지정된 날짜 내의 모든 날짜를 포함하는 완전한 데이터 세트를 얻을 수 있습니다. 범위. 누락된 날짜는 0으로 채워져 데이터를 포괄적으로 표시합니다.

위 내용은 누락된 데이터에 대해 채워진 0 값으로 포괄적인 날짜 범위를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.