Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于以前的值连续更新变量值_Sql_Netezza - Fatal编程技术网

Sql 基于以前的值连续更新变量值

Sql 基于以前的值连续更新变量值,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

我正在尝试根据以前更新的值更新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 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