|
create table G (goods varchar(2),lot varchar(3),bal int) create table O (oid varchar,goods varchar(2),qty int) insert G select 'aa','p01',5 union select 'aa','p02',10 union select 'bb','p01',20
insert O select '1','aa',11 union select '1','bb',10 union select '2','aa',2 union select '3','aa',1
select oid,b.goods,lot,deli=(case when sq>sb then sb else sq end)-(case when sq-qty<sb-bal then sb-bal else sq-qty end) from ( select *,sq=( select sum(qty) from o where oid <=a.oid and goods=a.goods ) from o a ) b join ( select *,sb=( select sum(bal) from g where goods=a.goods and lot<=a.lot ) from g a ) c on b.goods=c.goods and sq-qty<sb and sq>sb-bal order by oid,b.goods,lot
drop table g,o
|