if exists(select 1 from sysobjects where id=object_id('input') and xtype='U') drop table input
go
create table Input
(
名称 varchar(2),
代号 varchar(3),
工号 varchar(2),
批次 varchar(3),
入库数量 int,
库存数据 int,
入库时间 varchar(10)
)
insert into input
select 'a1','ab','ac','p06',30,30,'2006-05-12' union all
select 'a1','ab','ac','p06',50,50,'2006-05-13' union all
select 'a1','ab','ac','p06',50,50,'2006-05-14' union all
select 'a1','abc','ac','p06',230,230,'2006-05-13'
select * from input
declare @a varchar(2),@b varchar(3),@c varchar(2),@d int
select @a='a1',@b='ab',@c='ac',@d=100
declare @char1 varchar(10),@char2 int
select @char1=min(入库时间),@char2=min(库存数据)
from
(
select 入库时间,(select sum(库存数据) from input where 名称=a.名称 and 代号=a.代号 and 代号=a.代号 and 入库时间<=a.入库时间)as 库存数据
from input a
where 名称=@a and 代号=@b and 工号=@c
)a
where 库存数据>@d
update input
set 库存数据=0
where 入库时间<@char1
and 名称=@a and 代号=@b and 工号=@c
update input
set 库存数据=@char2-@d
where
入库时间=@char1 and 名称=@a and 代号=@b and 工号=@c
select * from input
drop table input
/*
名称 代号 工号 批次 入库数量 库存数据 入库时间
---- ---- ---- ---- ----------- ----------- ----------
a1 ab ac p06 30 30 2006-05-12
a1 ab ac p06 50 50 2006-05-13
a1 ab ac p06 50 50 2006-05-14
a1 abc ac p06 230 230 2006-05-13
名称 代号 工号 批次 入库数量 库存数据 入库时间
---- ---- ---- ---- ----------- ----------- ----------
a1 ab ac p06 30 0 2006-05-12
a1 ab ac p06 50 0 2006-05-13
a1 ab ac p06 50 30 2006-05-14
a1 abc ac p06 230 230 2006-05-13