我有一张桌子,上面放着已经到达港口的船只,以及他们捡了多少产品。我还有另一个表,其中包含有关该端口的每日产量和它可以存储的最大容量的信息。到目前为止,代码如下:
select *, CASE WHEN sum(daily_prod) OVER (PARTITION BY project_name ORDER BY date_arrive) - sum(pickup) OVER (PARTITION BY project_name ORDER BY date_arrive) > storage_capacity_mt
THEN storage_capacity_mt - pickup
ELSE sum(daily_prod) OVER (PARTITION BY project_name ORDER BY date_arrive) - sum(pickup) OVER (PARTITION BY project_name ORDER BY date_arrive)
END
as delta from t_test
该表如下所示:
date_arrive pickup project_name daily_prod storage_capacity_mt
2016-01-06 0 a5 60000 151575
2016-01-07 0 a5 60000 151575
2016-01-08 0 a5 60000 151575
2016-01-09 139222 a5 60000 151575
2016-01-10 0 a5 60000 151575
2016-01-11 63126 a5 60000 151575
我正在尝试创建一个将考虑以下条件的累积总和:
由于现在可以正常工作,因此代码将识别出该值超出了生产能力,从生产能力中减去了提货量,但下一个值将不会将日产量增加到与前一行的差额上,而是返回到运行的累计量总和。
那我怎么实现这样的代码?