首页 > 解决方案 > 在指定日期之间向表 Oracle 添加缺失记录

问题描述

我有如下表:

在此处输入图像描述

但我想要的是低于输出:

在此处输入图像描述

从 min.date 到 max 的每一天都应该存在每个名称记录。日期。如果记录不存在于原始表中,则其值应在特定日期更新为 0。

我无法弄清楚这个查询。请。任何人都可以建议我为此编写查询。

提前致谢..!

标签: sqloracle

解决方案


如果表中有所有日期,则可以使用原始表中的数据。用于cross join生成行,然后left join引入值:

select n.name, d.date, coalesce(t.value, 0) as value
from (select distinct name from t) n cross join
     (select distinct date from t) d left join
     t
     on t.name = n.name and t.date = d.date;

如果某些日期完全从表中丢失,那么您需要一个日历表或某种 CTE 来生成所有日期。


推荐阅读