oracle存储过程实现两张表多条数据对多条数据的相减操作,并伴有两张表的更新,已经第三张中间表的插入.

具体的需求是这样的:第一张表的数据是这样的:select rm.seq_id,rm.item_code,rm.quantity from t_lis_rm_sales rm where rm.quantity<0 order by rm.seq_id

第二张表的数据是这样的:

现在的需求是:第一张表的数据依次从上到下根据item_code去扣减第二张表的现有量, 根据现在的数据第一张表的130100002第二张表是没有与之对应的数据,所以更新第一张表的其中一个字段(flag)为N第一张表的第二条数据130100001现有量是-1 去与 第二张表的现有量扣减 也即 -1+8=7 说明第一张表的第二条数据130100001数据扣减成功,将此数据标记为Y ,然后看第一张表的第三条数据会继续扣减 -1+7 ,直到将第二张表的第一条数据更新为0,在继续减下一条数据,依次类推.
有没有人能理解这个问题和思路的?

第1个回答  2015-01-22
select t.item_code,t.sum_q+nvl(p.sum_q,0) as sum_quantity,
(case when p.sum_q is null then 'N' else 'Y') end as flag
from (select item_code,sum(quantity) as sum_q from A group by item_code) t
left join (select item_code,sum(quantity) as sum_q from B group by item_code) p
on t.item_code=p.item_code
;追问

需求是不能用分组的,扣减成功的意义是:就拿5753和5754来说 他们的数值都是-1 首先5735的-1去和第二张表item_code的第一条数据去减 也即 第二张表的5859 为8 8首先-1=7 所以 5753代表扣减成功 更新为Y 5859的剩余7 在去减5754的-1 直至减完为止 然后在去和9474的减 依次类推)

追答

那就是一个累计值的问题,最好给个10条测试数据,然后给出你要的最后结果,这个不难的

本回答被提问者和网友采纳