在指定日期之间向oracle表添加缺少的记录

xriantvc  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(303)

我的表格如下:

但我想要的是以下输出:

从最短日期到最长日期的每一天都应出现每个姓名的记录。如果原始表中不存在该记录,则应在特定日期将其值更新为0。
我想不出这个问题的答案。请。有谁能建议我写这个问题。
提前谢谢。。!

aij0ehis

aij0ehis1#

如果表中有所有日期,则可以使用原始表中的数据。使用 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来生成所有日期。

相关问题