我需要根据输入值
更新行示例:在我的表数据中
**LOTNUMBER QUANTITY**
0000001 30
0000002 30
0000003 20
0000004 20
0000005 10
输入值 -20 然后
我需要获取最新的批号并更新批号0000005 to 0
和0000004 to 10
然后输出
**LOTNUMBER QUANTITY**
0000001 30
0000002 30
0000003 20
0000004 10
0000005 0
先谢谢。
答案 0 :(得分:1)
您可以组合窗口函数,CTE和相关更新来实现这一点,它很丑陋且可能非常低效。我不是Oracle专家。
update data u set quantity=(
with d as
(
select lotnumber as l , greatest(0,quantity - greatest (0,
20
+ quantity - sum(quantity) over (order by lotnumber desc))) as v
from data
)
select v from d where u.lotnumber=d.l
);
那" 20"中间是你的输入值