日期:2014-05-17  浏览次数:20695 次

求教个修改的问题
本帖最后由 drsheldoncooper 于 2013-03-21 09:51:20 编辑
资源表a,请求表b,a的资源按时间顺序分配给b,
当a的资源>b的请求,a分配b的请求数,
当a的资源<b的请求,a分配a的资源数
____________处理前______________
资源表a:
物资    时间       数量
A       2013-1-1   1
A       2013-1-2   2
A       2013-1-3   3
B       2013-1-1   1
B       2013-1-3   1
请求表b:
物资    数量
A       4
B       3
____________处理后______________
资源表a:
物资    时间       数量
A       2013-1-3   2
分配表c:
物资    时间       数量
A       2013-1-1   1
A       2013-1-2   2
A       2013-1-3   1
B       2013-1-1   1
B       2013-1-3   1   

怎样用语句更新?谢过。

------解决方案--------------------
引用:
引用:资源表A,作为“资源表A”
新建一个即时资源表AA
汇总上述(处理前的)资源表A,可以得到如下结果
资源  库存
A    6件
B    2件

每次资源入库或者出库时,修改一下即时资源表AA。
请求资源时,用即时资源表AA做比对。
和进销存一个道理的。
谢谢你的留言,但是好像没有看懂我的问题。
我的问题要求按照……


好像意思是这样吧……应该没理解错……
所以建议你起一个新的表,作为“即时库存”。

难道资源A,现存为6,在出货的时候,有出货顺序么……?
申请出货4个,先出1号——再出2号的——再出3号的1个,剩余2个……?
有这样的要求……?

只管库存数,反馈结果回去不就好了?
一定需要按顺序来出货?
------解决方案--------------------
表名有点乱,有的操作也不需要,更正

create table a(a varchar(10), b datetime, c int)
create table b(a varchar(10), c int)
 
insert into a select 'A','2013-1-1',1 union all 
              select 'A','2013-1-2',2 union all 
              select 'A','2013-1-3',3 union all 
              select 'B','2013-1-1',1 union all 
              select 'B','2013-1-3',1
 
insert into b select 'A',4 union all
              select 'B',3
 
declare @t table (a varchar(10), b datetime, c int ,d int)
 
insert into @t(a,b,c,d) select a.*,isnull(b.c,0) from a left join b on a.a=b.a order by a.a,a.b 
 
declare @a varchar(10),@sum int,@d int
update @t set @sum=case @a when a then @sum-@d else d end,
              @