求一先进先出SQL算法或存储过程

paswar 2015-04-30 05:30:42
进仓表
id 日期 产品 数量 单价
1 2015-01-01 A 10 100
2 2015-01-02 A 4 120
3 2015-01-03 A -5 100 -->此记录为退货
3 2015-01-04 A 15 90

出仓表
id 日期 产品 数量
1 2015-01-02 A 5
2 2015-01-04 A 6
3 2015-01-05 A -3 -->此记录为退回仓库
3 2015-01-07 A 10

求每次出仓的货值金额,如下:
id 日期 产品 数量 金额
1 2015-01-02 A 5 500 -> 5*100=500
2 2015-01-04 A 6 660 -> 发生在退货日期之后,4*120+2*90 = 660
3 2015-01-05 A -3 300 -> 按最近日期的出仓单价 2*90 +1*120= 300
3 2015-01-07 A 10 930 ->之前退回一张120的,所以1*120+9*90 = 930

100分求大神帮忙!!!
...全文
329 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
paswar 2015-05-16
  • 打赏
  • 举报
回复
引用 3 楼 Tiger_Zhao 的回复:
首先,你每个表的id都是唯一的吧?不会象举例中出现两个3? 可以直接用进仓id当作批次。 严格来说两种退货都需要指定对应的批次,你既然按照最近原则也随便你了。 解决方法我写成博客了。
楼上辛苦了,虽然我已找到其他办法,但还是谢谢你!!100分给你了
czfxwpy 2015-05-05
  • 打赏
  • 举报
回复
楼上的实在闲,楼主看他博客就好了
Tiger_Zhao 2015-05-04
  • 打赏
  • 举报
回复
首先,你每个表的id都是唯一的吧?不会象举例中出现两个3?
可以直接用进仓id当作批次。
严格来说两种退货都需要指定对应的批次,你既然按照最近原则也随便你了。
解决方法我写成博客了。
paswar 2015-05-02
  • 打赏
  • 举报
回复
引用 1 楼 yangb0803 的回复:
额,怎么看怎么不好弄额....偶搞不定, 友情帮顶下 如果你在出入库表设计时, 用批次管理就好弄了.
能说说具体吗?我理解的每次进库就是一批次,不是吗?
道玄希言 2015-05-01
  • 打赏
  • 举报
回复
额,怎么看怎么不好弄额....偶搞不定, 友情帮顶下 如果你在出入库表设计时, 用批次管理就好弄了.

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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