进销存中库存的加权平均值(150分)

  • 主题发起人 主题发起人 sun1000
  • 开始时间 开始时间
S

sun1000

Unregistered / Unconfirmed
GUEST, unregistred user!
表A库存表 <br>编码 库存 <br>a &nbsp;10 &nbsp;<br>b &nbsp;15 &nbsp;<br>表B 进货表<br>编码 数量 单价 &nbsp;时间(月)<br>a &nbsp; &nbsp;2 &nbsp; &nbsp;12 &nbsp; &nbsp;11<br>a &nbsp; 10 &nbsp; &nbsp;16 &nbsp; &nbsp;10<br>b &nbsp; &nbsp;10 &nbsp; 16 &nbsp; &nbsp;9<br>b &nbsp; &nbsp;5 &nbsp; &nbsp;14 &nbsp; &nbsp;10<br>b &nbsp; &nbsp;10 &nbsp; 19 &nbsp; &nbsp;11<br>怎么样写SQL 语句 得到 下面结果<br>编码 &nbsp;库存 &nbsp;当前库存数量的平均进价<br>a &nbsp; &nbsp; &nbsp;10 &nbsp; &nbsp; 平均进价[(12*2+(10-2)*16)/10]=15.2<br>b &nbsp; &nbsp; &nbsp;20 &nbsp; &nbsp; 平均进价[(10*19+5*14+5*10)/20]=16.5<br>急啊,望高手指点
 
计算加权平均值不能单纯考虑进货情况,要连同 销售时的成本也考虑进去的。<br><br>比如 1种杯子,第一次进货 5元*10个,第二次 2元*20个。<br>1、如果2次进货,中间一个也没卖,那么 加权平均价是 (5*10+2*20)/(10+20)=3元;<br><br>2、如果第二次进货之前,已经卖掉10个,那么加权平均价是 2元;<br><br>3、如果第二次进货之前,卖掉小于10个,那么加权平均价大于2元 小于3元。
 
我的意思就是 上面你说的意思,SQL语句怎么样写呢?<br>急 ,在线等
 
你都没给出货的表
 
如果原来没有考虑周全,可能要改表结构。<br>至少出货表要包含 当时的 出货成本,也就是说,要记录起当时的 加权平均值。
 
上面的表A 是当前的库存表,库存是进货后卖剩的,<br>表A库存表 <br>编码 库存 <br>a &nbsp;10 &nbsp;<br>b &nbsp;15 &nbsp;<br>表B 就是进货表啊<br>编码 数量 单价 &nbsp;时间(月)<br>a &nbsp; &nbsp;2 &nbsp; &nbsp;12 &nbsp; &nbsp;11<br>a &nbsp; 10 &nbsp; &nbsp;16 &nbsp; &nbsp;10<br>b &nbsp; &nbsp;10 &nbsp; 16 &nbsp; &nbsp;9<br>b &nbsp; &nbsp;5 &nbsp; &nbsp;14 &nbsp; &nbsp;10<br>b &nbsp; &nbsp;10 &nbsp; 19 &nbsp; &nbsp;11
 
这样不行的,缺少信息,至少 卖的时候的成本没法看出来。这个是没法重新演算回去的。
 
上面的表A 是当前的库存表,库存是进货后卖剩的,<br>表A库存表 <br>编码 库存 <br>a &nbsp;10 &nbsp;<br>b &nbsp;15 &nbsp;<br>表B 就是进货表啊<br>编码 数量 单价 &nbsp;时间(月)<br>a &nbsp; &nbsp;2 &nbsp; &nbsp;12 &nbsp; &nbsp;11<br>a &nbsp; 10 &nbsp; &nbsp;16 &nbsp; &nbsp;10<br>b &nbsp; &nbsp;10 &nbsp; 16 &nbsp; &nbsp;9<br>b &nbsp; &nbsp;5 &nbsp; &nbsp;14 &nbsp; &nbsp;10<br>b &nbsp; &nbsp;10 &nbsp; 19 &nbsp; &nbsp;11
 
不需要卖的时候的成本了的,老板就是要求 知道 &nbsp;当前库存的 平均进价就可以了,这个与销售的时候有关么?
 
你给的表 本身就没法看出来,举个例子:<br>a 目前库存是10, 进了2+10=12 ,就是说卖了2个,如果顺序是:<br>1、2 - 2 + 10 &nbsp;那么现在的加权平均值是 16<br>2、2 + 10 -2 那么现在的加权平均值是 15.2<br><br>明白?
 
我明白你说的就是,现在要求的是先进的先出,即你上面中的 &nbsp;2<br>2+10-2 这种要求
 
如果你要求是平均进价就很简单:<br><br>select b.编码,a.库存,sum(b.数量*b.单价)/sum(b.数量) as 平均进价 <br>from 表a,表b <br>where a.编码=b.编码 <br>group by b.编码,a.库存
 
来自:sun1000, 时间:2008-4-30 9:59:26, ID:3890048<br>我明白你说的就是,现在要求的是先进的先出,即你上面中的 &nbsp;2<br>2+10-2 这种要求 <br><br>先进先出的貌似是第一种情况,不过没有出货时间比较,都没法说明问题。<br>关键就是这个-2 发生在什么时候,而导致到加权平均价 不同。<br><br>2个价格都是正确的,只不过是因为发生的事情先后不一样而已。
 
要求的平均进价 &nbsp;不是全体进货的平均进价,是当前库存数量的平均进价,按先进来的先卖掉,就像你上面说的第二种思想那样,如果卖掉2个,库存中的数量是10,但是10是由<br>2(11月)+10(10月)-2=10 这样来的 ,所以平均进价是 [2*12+(10-2)*16]/10=15.2
 
时间:10月分比11月分的进得早,所以上10月份的先卖
 
如果缺少信息 感觉都无法得到正确的结果.<br><br>比如a的库存,如果现在库存是1,那么就是:<br>10+2 -11 了,都无法用公式去套用。<br>觉得你还是用全部的平均价去 糊弄老板 吧,都相差不大。上面已经说了,这个15.2也是不对的啊,所以只能 两害相权 了。
 
比如a的库存,如果现在库存是1,那么就是:<br>10+2 -11 了, ..2+10-11 &nbsp;平均是12,先进先出应该是这样吧,不管你什么时候卖出去的,卖掉的总是先进来的,总是先卖掉前面进的10,
 
我说的 糊弄 不是贬低你的意思啊,千万别生气,我就经常这样做。<br><br>有时候,客户什么都不懂,就直接要求拿个好东西出来,有时候只能一方面坚持自己的做法,一方面在表面上迎合客户的需求,就像你得到的这个总平均数一样,没办法准确就只能自己找简单的办法解决吧。
 
问题是如果同个时间段,有多行多个进货价,就会乱了啊。<br><br>过程,过程很重要。
 
按日期,保存每日每个商品的各种价格,这个过程叫做日结,你最好到超市 或 卖超市软件的地方去问下,怎么操作的,每天都要做一个日结算,获得每日成本价格,是另外的表,如果有1万个商品,一年有365万条该数据.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部