读书人

求教个修改的有关问题

发布时间: 2013-03-25 15:43:04 作者: rapoo

求教个修改的问题
本帖最后由 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,
@d=case when @sum>c then c else @sum end,


d=@d,
@a=a

select a,b,d from @t where d<>0

读书人网 >SQL Server

热点推荐