declare @a table(货号 int,毛需求 int,订单供给 int,仓存供给 int)
insert @a(货号,毛需求,订单供给,仓存供给)
values(101,500,0,0)
insert @a(货号,毛需求,订单供给,仓存供给)
values(101,0,100,0)
insert @a(货号,毛需求,订单供给,仓存供给)
values(101,0,0,400)
insert @a(货号,毛需求,订单供给,仓存供给)
values(101,200,0,400)
select * from @a
declare @b table(货号 int,毛需求 int,订单供给 int,仓存供给 int,累计 int)
declare @num int
set @num=0declare @a1 int
declare @a2 int
declare @a3 int
declare Num_Cursor CURSOR FOR --游标的定义
select 毛需求,订单供给,仓存供给 from @a
open Num_Cursor --打开游标
fetch next from Num_Cursor into @a1,@a2,@a3
while @@FETCH_STATUS=0
begin
set @num=@num+@a2+@a3-@a1
insert @b(毛需求,订单供给,仓存供给,累计)
values(@a1,@a2,@a3,@num)
fetch next from Num_Cursor into @a1,@a2,@a3 --循环
end
close Num_Cursor --关闭游标
deallocate Num_Cursor --销毁游标
select * from @b--参考
INSERT INTO @tb
SELECT 'AA', '2006-01-15', 1, 150
UNION ALL SELECT 'BB', '2006-01-16', 1, 200
UNION ALL SELECT 'AA', '2006-01-28', 2, 500
UNION ALL SELECT 'BB', '2006-01-17', 2, 20SELECT ITEM, 日期,CASE 据型 WHEN 1 THEN 数量 ELSE 0 END AS 进货数量,
CASE 据型 WHEN 2 THEN 数量 ELSE 0 END AS 发数出量 INTO #T
FROM @tb
ORDER BY ITEM, 日期SELECT ITEM, 日期, 进货数量, 发数出量,
进货数量 - 发数出量 +
ISNULL((SELECT TOP 1 进货数量 - 发数出量 FROM #T
WHERE ITEM = A.ITEM AND 日期 < A.日期 ORDER BY 日期 DESC),0) AS 结存
FROM #T ADROP TABLE #T
进货数量 - 发数出量 +
ISNULL((SELECT TOP 1 进货数量 - 发数出量 FROM #T
WHERE ITEM = A.ITEM AND 日期 < A.日期 ORDER BY 日期 DESC),0) AS 结存
FROM #T A