首页 > 数据库 > mysql教程 > 如何在 SQL 查询中用零值填充缺失的日期?

如何在 SQL 查询中用零值填充缺失的日期?

Mary-Kate Olsen
发布: 2024-12-17 11:08:25
原创
416 人浏览过

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

检索日期范围内具有零值的缺失日期

原始查询检索两个日期之间的数据,但排除了缺失的日期。要包含缺失的日期并为缺失的数据分配零值,我们可以利用一种称为“日期标记”的技术。

标记缺失日期

递归公用表表达式(CTE)可用于生成指定范围内的一系列日期。 CTE 名为 d,从范围的第一个日期开始,并递归添加一天,直到到达结束日期。

;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 中存在日期,则使用该值;否则,我们替换零。

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) 子句可防止查询因日期范围内的过度递归而失败太大了。您可以调整该值以适合您的特定数据范围。

通过使用此技术,我们可以检索两个日期之间的所有日期,包括缺失的日期,同时确保缺失的值表示为零。

以上是如何在 SQL 查询中用零值填充缺失的日期?的详细内容。更多信息请关注PHP中文网其他相关文章!

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