假设我在teradata sql中具有下表。 如何获得“最终”列。
第一个值等于“ mount”列,第二个值等于final-价格(10-1),第三个值等于(9-2)。
hour mount price
0 10 1
1 10 2
2 10 3
hour mount price final
0 10 1 10
1 10 2 9
2 10 3 7
答案 0 :(得分:1)
您似乎想要一个累加的总和,然后是与mount
的差:
select hour, mount price,
(mount + price -
sum(price) over (order by hour rows between unbounded preceding and current row)
) as final
from t;
您真的想要总和到上一行。但是,如果您使用:
sum(price) over (order by hour rows between unbounded preceding and 1 preceding)
然后,您将需要处理NULL
值。相反,我只是从当前行中添加price
,然后让累计金额包括该价格。