计算求助

qq_37298256 2017-01-09 10:52:52
我有如下一个表格:


请问有没有可能使用语句填写上出库成本A的值和入库结存成本?
其中A的值等于上一行的结存成本,
入库结存成本=(入库数量x入库成本+上一行的结存数量x结存成本)/(入库数量+上一行的结存结存数量)
谢谢!
...全文
154 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37298256 2017-01-12
  • 打赏
  • 举报
回复
谢谢2位提供的帮助
道素 2017-01-10
  • 打赏
  • 举报
回复
你什么版本的数据库,看下面的支持不 你现在的成本算法算是最新平均法成本吧?算是比较简单的一种,我有些修改,对于初始的,我也把它看成是入库 (每批入库都对应一个成本值)

;WITH t(d,t,q,c,sq,sc)AS(
   SELECT '2016-1-1','init',1,100,10,100 UNION
   SELECT '2016-1-3','out',1,100,9,100 UNION
   SELECT '2016-1-4','in',1,80,90,100 
),tmp AS(
    SELECT *
           ,SUM(t.q)OVER(PARTITION BY CASE WHEN t.t='init' THEN 'in' ELSE t.t END  ORDER BY t.d) AS CurrentQty 
           ,SUM(t.q*t.c)OVER(PARTITION BY CASE WHEN t.t='init' THEN 'in' ELSE t.t END  ORDER BY t.d) AS CurrentAmount
    FROM  t
)

SELECT *,tmp.CurrentAmount/tmp.CurrentQty FROM tmp ORDER BY tmp.d,tmp.t

d        t    q           c           sq          sc          CurrentQty  CurrentAmount 
-------- ---- ----------- ----------- ----------- ----------- ----------- ------------- -----------
2016-1-1 init 1           100         10          100         1           100           100
2016-1-3 out  1           100         9           100         1           100           100
2016-1-4 in   1           80          90          100         2           180           90
--小F-- 2017-01-10
  • 打赏
  • 举报
回复
先算A的值 同理算出B的值。就是同一个表自己JOIN自己 关联条件为表的排序值等于表的排序值减1
--小F-- 2017-01-10
  • 打赏
  • 举报
回复
select b.结存成本 as 成本 from (select row_number()over(order by getdate()) as px,* from tb) as a inner join (select row_number()over(order by getdate()) as px,* from tb)  as b on a.px=b.px-1

34,588

社区成员

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

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