表MOCTB
工单单别 工单单号 材料品号 需领用量 已领用量
TB001 TB002 TB003 TB004 TB005
510 0807110001 A 100 20
510 0807120004 A 200 0
510 0807170029 A 100 50
510 0806150009 B 200 100
510 0807110001 B 50 50
510 0807190004 C 100 10
510 0807180001 C 20 0表INVMB
品号信息 库存数量
MB001 MB064
A 100
B 50
C 80
结果:
工单单别 工单单号 材料品号 欠料量
TB001 TB002 TB003 TB006
510 0807110001 A 0
510 0807120004 A -180
510 0807170029 A -50
510 0806150009 B -50
510 0807110001 B 0
510 0807190004 C -10
510 0807180001 C -20请各位高手指点。。
工单单别 工单单号 材料品号 需领用量 已领用量
TB001 TB002 TB003 TB004 TB005
510 0807110001 A 100 20
510 0807120004 A 200 0
510 0807170029 A 100 50
510 0806150009 B 200 100
510 0807110001 B 50 50
510 0807190004 C 100 10
510 0807180001 C 20 0表INVMB
品号信息 库存数量
MB001 MB064
A 100
B 50
C 80
结果:
工单单别 工单单号 材料品号 欠料量
TB001 TB002 TB003 TB006
510 0807110001 A 0
510 0807120004 A -180
510 0807170029 A -50
510 0806150009 B -50
510 0807110001 B 0
510 0807190004 C -10
510 0807180001 C -20请各位高手指点。。
A 库存数量=100,这张工单不欠数,库存多出20
第二张工单 A 未领用量=200
A 库存量=20,工单欠数-180
第三张工单 A 未领用量=50
A 库存量=0,工单欠数-50
下面不同品号计算是同样的方法
declare @MOCTB table ( TB001 int, TB002 char(10), TB003 char(1) , TB004 int, TB005 int)
--工单单别 工单单号 材料品号 需领用量 已领用量
insert into @moctb
select 510, '0807110001', 'A', 100, 20 union
select 510, '0807120004', 'A', 200, 0 union
select 510, '0807170029', 'A', 100, 50 union
select 510, '0806150009', 'B', 200, 100 union
select 510, '0807110001', 'B', 50 , 50 union
select 510, '0807190004', 'C', 100 , 10 union
select 510, '0807180001', 'C', 20 , 0 declare @INVMB table (MB001 char(1), MB064 int)
insert into @invmb
select 'A', 100 union
select 'B', 50 union
select 'C', 80 select c.tb001 as 单别,c.tb002 as 单号,c.tb003 as 材料,
case when d.mb064>=c.tb006 then 0
else case when c.tb006-d.mb064<tb004-tb005 then mb064-tb006
else tb005-tb004
end
end as 欠料量
from (select a.tb001,a.tb002,a.tb003,a.tb004,a.tb005,isnull(sum(b.tb004-b.tb005),0) as tb006
from @moctb a
left join @moctb b on a.tb003=b.tb003 and a.tb002>=b.tb002
group by a.tb001,a.tb002,a.tb003,a.tb004,a.tb005
) c
left join @invmb d on c.tb003=d.mb001
order by tb001,tb003,tb002
/*
单别 单号 材料 欠料量
----------- ---------- ---- -----------
510 0807110001 A 0
510 0807120004 A -180
510 0807170029 A -50
510 0806150009 B -50
510 0807110001 B 0
510 0807180001 C 0
510 0807190004 C -30(7 行受影响)
*/