轧制产品剩余间隙填充

jckbn6z7  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(244)

产品在某个日期的剩余量是按产品操作(收入和支出)计算的,如货币交易的余额。
我有一个滚动产品操作的物化视图,其中投影到相应产品的每个操作都保留在通过窗口函数执行操作的时刻( ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ).

但如果我想得到产品的剩余日期,并没有产品操作在这一天进行,那么我不能收到剩余。
如何用零产品操作来填补几天的空白?如何以最小的成本高效地完成?有没有其他方法可以有效地获得产品剩余?

eoxn13cs

eoxn13cs1#

在postgres中,您可以使用 generate_series() :

select p.product_id, coalesce(t.created_at, gs.dte),
       coalesce(volume, 0),
       coalesce(remaining_volume, 0)
from (select product_id, min(created_at)::min_ca, max(created_at) as max_ca
      from t
      group by product_id
     ) p cross join lateral
     generate_series(min_ca::date, max_ca::date, interval '1 day') gs(dte) left join
     t
     on t.product_id = p.product_id and
        t.created_at::date = gs.dte;

相关问题