流星尔求助:

流星尔 2002-03-09 10:33:03
qyrkdsj (入库单数据)
wzbh date rksl dj
A 1 1 5
A 1 2 2
B 2 2 3
B 3 2 4

ckdsj出库单数据

wzbh date cksl
A 1 3
B 2 2

就是根据wzbh字段和date字段,比如a出库cksl为3,就到入库单数据里找物资编号为a的数据,其中物资编号为a的单价可能不同,然后根据先进先出的原则,凑足3,并把出库总价移动加权,即 移动加权平均价为=(1*5+2*2)/3
得到的平均价表为
wzbh 出库日期 平均价
A 1 3
B 2 3


而且全月出库单数据中要对整个月的出库求总平均价。即上面求出的是每天的平均价,在如何求出全月的出库平均价呢。这个平均价字段要不要呢,要的话,放在哪比较好呢。
...全文
57 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
流星尔 2002-03-10
  • 打赏
  • 举报
回复
这个问题,我发现其实不能上来问。其实是一个很大的问题,并不是一两句sql能解决的。同样谢谢大家了。我没有把问题说清楚。
流星尔 2002-03-09
  • 打赏
  • 举报
回复
to N_chow(一劍飄香++):
我希望的结果是a的两条记录加起来刚好够出库。移动加权平均价为(2*2+1*5)/3
b的2号入库只有2,库存不够,所以就不能出库。
流星尔 2002-03-09
  • 打赏
  • 举报
回复
to yestoyes():
这中情况的处理方法就是把wzbh和date相同的进行分组汇总就行了。
相当于a1 1 2
流星尔 2002-03-09
  • 打赏
  • 举报
回复
这时我的一个同事的东西,她问我该怎么做。我想问的是大家觉得是从入库单数据中先进先出求平均价,是不是一定要用游标循环。如果是的话,这个循环怎么写,sql的游标我不会
yestoyes 2002-03-09
  • 打赏
  • 举报
回复
请问你的出货如果是:
wzbh date cksl
A 1 1
A 1 1

这种情况你是怎么处理日平均价的(你不可能说每日都只出一笔吧)。
既然你的日平均价采用了加权平均法计算,你的月平均价也应采用同一方法。
coolyylu 2002-03-09
  • 打赏
  • 举报
回复
我觉得平均价可以放在一个一个临时表中.我不知道想得到什么帮助.你要求原代码吗?你的算法很清楚的啊.求出出库的月平均价格也是按照移动加权平均价计算吗?流星兄,我不知道那里可以帮你.
N_chow 2002-03-09
  • 打赏
  • 举报
回复
假若
ckdsj出库单数据 的數據為

wzbh date cksl
A 1 3
B 2 3

那麼你期望的結果是什麼?

N_chow 2002-03-09
  • 打赏
  • 举报
回复
SQL Server2000:

Declare @a table (wzdh varchar(2),date int,rksl int,dj int)
Declare @b table (wzdh varchar(2),date int,cksl int)
insert into @a values ('A',1,1,5)
insert into @a values ('A',1,2,2)
insert into @a values ('B',2,2,3)
insert into @a values ('B',3,1,5)
insert into @b values ('A',1,3)
insert into @b values ('B',2,2)

Select a.wzdh,a.date as 出庫日期,amt/b.cksl as 平均價 From (
Select wzdh,date, sum(rksl*dj) as amt from @a group by wzdh,date) a INNER JOIN @b b
ON a.wzdh=b.wzdh and a.date=b.date

34,872

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧