求助啊,这个怎么写啊
sql吧
全部回复
仅看楼主
level 3
铁剑木S 楼主
图片来自:Me午夜屠猪男的百度相册图片来自:Me午夜屠猪男的百度相册
库存=期初库存-出库数量 ,怎么写啊
2015年04月21日 03点04分 1
level 1
你的两个表的关联关系是什么?库存在哪张表里?
2015年04月21日 03点04分 2
level 6
第一,出库明细表里应该有个ID列。既然库存表里用产品ID为唯一码,出库表里也就应该用对应的码(当然最好的是另外有一个产品名录表作为基表,都从里面取产品ID)
第二,每一个结算期间,都有可能同一个产品多次入库出库,所以不能简单扣除,而是每单扣一次。
现在不考虑第一个问题,假设表一的产品名称和表二的产品ID是完全一一对应且没有重复项的,试写过程如下:
2015年04月21日 08点04分 3
level 6

create procedure CalcKC
--严格来说,此处应有参数,设置计算的库存,是哪个期间的,比如是五月的还是六月的
as
begin
declare @tempID varchar(30)
declare @CKSL int
declare CKcur cursor
for
select 产品ID,出库数量 from 出库明细表
--严格来说,此处选择的也应有限制,比如说订单是在指定期间内的,
--又比如说应该设置标记,如果处理过了就标记掉,防止重复处理,又给补充处理留口子
--
for read only
open cursor CKcur
fetch CKcur into @tempID,@CKSL
while (@@sqlstatus = 0)
begin
update 库存表 set 库存=期初库存-@CKSL --变量
where 产品名称=@tempID --变量
--如果过程有期间参数,就可以在这儿用,只更新本期的库存
--你的表里没有看到库存是哪个期的
fetch CKcur into @tempID,@CKSL
end
close CKcur
deallocate cursor CKcur
end
2015年04月21日 08点04分 5
非常感谢,两个的产品ID都是一样的,只不过建立关系后让后者显示的是对应的产品名称,方便阅读,只是显示的问题,其实他们都是数字类型的.
2015年04月23日 12点04分
我在研究一下
2015年04月23日 12点04分
1