【发布时间】:2021-09-13 06:49:41
【问题描述】:
我有一张表,我必须在 Final_value 列中插入值
date column1 column2 Final_value
01-01-10 5.5 Null Null
02-01-10 4.2 Null NULL
03-01-10 5.3 0.4 NULL
04-01-10 6.4 Null NULL
05-01-10 7.0 0.3 NULL
06-01-10 7.7 Null NULL
任务说明
-
Final_value 列的第一个值将 = column1 的第一个值,即 5.5
-
从第 2 行开始,我们将检查 column2 是否为 Not Null
a) 如果为 TRUE ,则公式为
上一个 Final_value 列*(当前 column1 值/上一个 Column1 值)+ column2 value * (前一列值/前一个 Final_value )b) 如果为 FALSE,则公式为 Final_value 列的上一个值 * ( column1 的当前值/上一个 第 1 列的值)
所需输出
date column1 column2 Final_value
01-01-10 5.5 Null 5.5
02-01-10 4.2 Null 4.2
03-01-10 5.3 0.4 5.7
04-01-10 6.4 Null 6.883019
05-01-10 7.0 0.3 7.850943
06-01-10 7.7 Null 8.636038
【问题讨论】:
-
到目前为止你尝试了什么?
-
问题是你没有任何唯一值(比如Id)。您不能使用 date-1 因为如果在特定日期没有数据可能会发生什么。但是你可以使用一个过程来更新它。
-
我被卡住了,因为我在更新时无法引用 Final_value 列的先前值。为了获取 column1 的先前值,我使用了 lag 函数并创建了一个新列 @RobertoHernandez
-
列日期是否总是不为空?
-
更正了公式,它应该是 4.2 * (5.3/4.2) + .4 (4.2 / 4.2) @MarmiteBomber 感谢您指出