首页 > 数据库 > mysql教程 > 如何使用 SQL 显示某个范围内的所有日期并用零填充缺失值?

如何使用 SQL 显示某个范围内的所有日期并用零填充缺失值?

DDD
发布: 2024-12-22 16:47:10
原创
665 人浏览过

How to Display All Dates in a Range and Fill Missing Values with Zero Using SQL?

开发查询以显示所有日期并用零填充缺失值

使用日期范围时,通常有必要考虑缺少数据点。本综合指南提供了一个解决方案,解决显示两个给定日期之间的所有日期并向缺失行分配零值的问题。

为了解决此问题,我们可以利用名为“d”的公用表表达式 (CTE) 。此 CTE 生成指定范围内的一系列日期。然后,我们可以在 CTE 和原始“临时”表之间执行左连接以获得所需的结果。

这是修改后的查询:

;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) -- use this if your dates are >99 days apart
登录后复制

此修改后的查询确保所有缺失捕获日期,并用零填充相应的“val”列。添加“OPTION (MAXRECURSION 0)”语句来处理日期范围超过 99 天的情况。

以上是如何使用 SQL 显示某个范围内的所有日期并用零填充缺失值?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板