为了账号安全,请及时绑定邮箱和手机立即绑定

一个关于先进先更新的sql问题

一个关于先进先更新的sql问题

不负相思意 2018-12-07 09:03:31
表1表1ID 单号 产品 数量 到货量1 001 A 102 001 B 102 002 A 30表2表2ID 产品 到货量1 A 30表3表3ID 单号 表2ID 产品1 001 1 A2 002 1 A表关系就是这样的,我现在要更新表1的到货量, 产品A总共进货是30个,按照单据先进先更新的原则应该是先更新001号单A的到货数10个,再更新002号单A的到货数20个,求高手解答
查看完整描述

2 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

create or replace procedure usp_goods_calculate
as
remainNum
number:=0;
nowproduct
varchar2(50):=' ';
needNum
number:=0;
begin
for rec in (select c.columnno,c.num xnum,b.product,b.num dnum
from table3 a
inner join table2 b
on a.product=b.product
inner join table1 c
on a.columnno=c.columnno and a.product=c.product
order by c.product,c.columnno)
loop
if nowproduct!=rec.product then
nowproduct:
=rec.product;
if rec.xnum<rec.dnum then
remainNum:
=rec.dnum -rec.xnum;
needNum:
=rec.xnum;
else
remainNum:
=0;
needNum:
=rec.dnum;
end if;
update table1
set rnum=needNum
where columnno=rec.columnno and product=rec.product;
elsif remainNum
!=0 then
if rec.xnum<remainNum then
remainNum:
=remainNum -rec.xnum;
needNum:
=rec.xnum;
else
needNum:
=remainNum;
remainNum:
=0;
end if;
update table1
set rnum=needNum
where columnno=rec.columnno and product=rec.product;
end if;
end loop;
end;

其中 单号:columnno    表1需要的数据:xnum   product:产品   dnum:到货量  rnum:获取数量

 

 

是不是这样

查看完整回答
反对 回复 2019-01-07
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

不太明白你的意思

查看完整回答
反对 回复 2019-01-07
  • 2 回答
  • 0 关注
  • 486 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信