进出库存SQL!!

入库信息

时间 数量 单价 商品ID
2003.1.1 10 10 1
2003.1.5 20 15 1
2003.1.8 15 20 1

出库信息

时间 数量 商品ID
2003.1.2 5 1
2003.1.8 26 1

查询结果

入库时间 数量 单价 商品ID
2003.1.1 5 10 1 对应出库 5

2003.1.1 5 10 1 对应出库 26
2003.1.5 20 15 1 对应出库 26
2003.1.8 1 20 1 对应出库 26

查询的结果是要查询出库的单价来,而出库的单价要根据入库的情况计算出来。就是把入库数量的信息按出库的数量分配。同时把入库的单价也查询出来。
---------------------------------------------------------------

select A.时间 时间,A.数量-B.数量 数量,A.单价 单价,A.商品ID 商品ID
from 入库信息表 A,出库信息表 B
where A.商品ID=B.商品ID and A.时间

 1<b.时间 #t="" #t1="" '2003-1-1',="" '2003-1-2',="" '2003-1-5',="" '2003-1-8',="" *="" 1="" 10,="" 15,="" 1:昨天还看到有先进先出法的贴子,你找一下。="" 20,="" 26,="" 2:如果在入库时指定一唯一的批号,出库时按此批号出库,那就简单多了。="" 5,="" @iamt="" @id="1" @idate="" @oamt="" @odate="时间" @price="" \---------------------------------------------------------------="" by="" create="" datetime="" datetime,="" declare="" from="" insert="" int="" int)="" int,="" into="" order="" select="" set="" table="" top="" where="" while="" 入库信息="" 入库信息(="" 出库信息="" 出库信息(="" 单价="" 商品id="@id" 数量="" 时间="" 这是先进先出的结果,做起来挺负责的。=""> 0   
 2begin   
 3select top 1 @iamt = 数量, @price = 单价, @idate = 时间 from #t order by 时间   
 4if @iamt &gt; @oamt   
 5begin   
 6update #t set 数量 = 数量 - @oamt where 时间 = @idate   
 7insert #t1 select @idate, @oamt, @price, @id   
 8set @oamt = 0   
 9end   
10else   
11begin   
12delete #t where 时间 = @idate   
13insert #t1 select @idate, @iamt, @price, @id   
14set @oamt = @oamt - @iamt   
15end   
16if @oamt = 0   
17begin   
18select top 1 @oamt = 数量, @odate = 时间 from 出库信息 where 商品ID = @id and 时间 &gt; @odate order by 时间   
19end   
20end   
21select * from #t1   
22  
23时间 数量 单价 商品ID   
24\------------------------------------------------------ ----------- ----------- -----------   
252003-01-01 00:00:00.000 5 10 1   
262003-01-01 00:00:00.000 5 10 1   
272003-01-05 00:00:00.000 20 15 1   
282003-01-08 00:00:00.000 1 20 1</b.时间>
Published At
Categories with 数据库类
Tagged with
comments powered by Disqus