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

时间:2018-07-20 01:07:14

标签: sql netezza

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

表A

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

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

2 个答案:

答案 0 :(得分:0)

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

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;

答案 1 :(得分:0)

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

这是我的答案,请尝试