CREATE TABLE [dbo].[TestTable](
[Id] [int] IDENTITY(1,1) NOT NULL,
[MoTypeId] int ,
[soCode] varchar(50),
[MoQty] int ,
[MoInQty] int ,
[HuoWei] varchar(50)
) ON [PRIMARY]
insert into [dbo].[TestTable]([MoTypeId],[soCode],[MoQty],[MoInQty],[HuoWei])values(1,'SO-001',100,100,'')
insert into [dbo].[TestTable]([MoTypeId],[soCode],[MoQty],[MoInQty],[HuoWei])values(1,'SO-001',100,100,'')
insert into [dbo].[TestTable]([MoTypeId],[soCode],[MoQty],[MoInQty],[HuoWei])values(2,'SO-001',100,0,'')
insert into [dbo].[TestTable]([MoTypeId],[soCode],[MoQty],[MoInQty],[HuoWei])values(1,'SO-002',200,0,'')
insert into [dbo].[TestTable]([MoTypeId],[soCode],[MoQty],[MoInQty],[HuoWei])values(1,'SO-002',200,200,'')
insert into [dbo].[TestTable]([MoTypeId],[soCode],[MoQty],[MoInQty],[HuoWei])values(2,'SO-002',400,0,'')
MoTypeId=2表示组装工单,MoTypeId=1表示金工工单
我现在需要做一个存储过程,更新HuoWei字段,
条件是:如果同一个销售订单的每笔金工工单入库数都大于等于工单数时,
更新这个销售订单所对应的所有工单的HuoWei字段为 '好'
------解决思路----------------------
create proc update_HuoWei
as
declare @socode varchar(50)
begin
update a set HuoWei='好'
from TestTable a
left outer join (select sum(MoInQty)MoInQty,soCode from TestTable where MoTypeId=1 group by soCode)b on a.soCode=b.soCode
left outer join (select sum(MoQty)MoQty,soCode from TestTable where MoTypeId=1 group by soCode)c on a.soCode=b.soCode
where a.MoTypeId=2 and isnull(b.MoInQty,0)>=isnull(c.MoQty,0)
end