Sql 基于以前的值连续更新变量值
我正在尝试根据以前更新的值更新sales列的值。比如说- 表ASql 基于以前的值连续更新变量值,sql,netezza,Sql,Netezza,我正在尝试根据以前更新的值更新sales列的值。比如说- 表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 sa
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