繁体   English   中英

基于先前值的连续更新变量值

[英]Continous update variable value based on previous value

我正在尝试根据先前更新的值来更新销售列的值。 例如 -

表A

Day    growth sales
1       1.1   1
2       1.2   NULL
3       1.3   NULL

我想根据增长来更新销售价值。 因此,第2天将是第1天的销售额*增长。 而第3天将是第2天更新的销售额*增长。 在netezza中不循环就可能吗? 感谢大家。

您可以使用累积总和和日志来获得累积积:

select t.*,
       (case when day = 1 then sales
             else (exp(sum(ln(growth)) over (order by day) / growth) *
                  max(case when day = 1 then sales end) over ()
        end) as new_sales
from t;
DECLARE @_i NUMERIC(18,2)  = (SELECT Sales FROM A WHERE Day = '1')

UPDATE A
SET @_i = Sales = @_i * CASE WHEN _Day = '1' THEN (SELECT Sales FROM A WHERE Day = '1') 
ELSE  GROWTH END

SELECT * FROM A

这是我的答案,试试这个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM