大浪淘沙999 2022-04-13 01:01 采纳率: 100%
浏览 268
已结题

Sql Server 有关库龄的问题代码如何编写

(出入库表) (商品编号) (出入库日期) (数量)
入库 123 2020-01-01 100
入库 234 2020-01-02 100
出库 123 2020-01-03 50
出库 234 2020-01-04 50
出库 123 2020-01-05 50
出库 234 2020-01-06 50
入库 123 2020-01-07 100
入库 234 2020-01-08 100
出库 123 2020-01-09 30
出库 234 2020-01-10 30

按截止指定时间搜索结果 2020-2-20
按先进先出原则

想要达成这样的效果
(商品编号) (库龄) (库存)
123 40 70
234 41 70

declare @dt datetime
set @dt='2020-1-20'

declare @t1 table ( pid char(18),datetime datetime, amount int)
insert @t1 select '123', '2020-01-01', 1000
union select '123', '2020-01-15', 1000
union select '234', '2020-01-01', 1000
union select '234', '2020-01-15', 1000

declare @t2 table ( pid char(18),datetime datetime, amount int)
insert @t2 select '123', '2020-01-01', 50
union select '123', '2020-01-02', 50
union select '123', '2020-01-05', 50
union select '234', '2020-01-01', 50
union select '234', '2020-01-02', 50
union select '234', '2020-01-05', 50

select t1.pid,DATEDIFF(day,t1.maxDate,@dt)+1 '库龄',(t1.totalNum - t2.totalNum) '库存' from

(select pid,max(datetime) maxDate,sum(amount) totalNum from @t1 where DATEDIFF(day,datetime,@dt)>=0 group by pid) t1

left join (select pid,sum(amount)totalNum from @t2 where DATEDIFF(day,datetime,@dt)>=0 group by pid) t2 on t1.pid=t2.pid

按你的还是不正确
应该的到的是

123 20 1850
234 20 1850

结果库龄是 6 就是第二次进货的库龄了, 实际是第一次没销售完,就库龄就还是第一次的进货时间

  • 写回答

7条回答 默认 最新

  • codeSniping 2022-04-13 10:08
    关注

    应该可以满足你的需求(你问题中的[出入库表]应该是字段标识,而不是表名,不知道是不是你的笔误):

    select
    t1.商品编号,
    DATEDIFF(day,t1.maxDate,'2020-2-20')+1 '库龄',
    (t1.totalNum - t2.totalNum) '库存'
    from (select 商品编号,max(出入库日期) maxDate,sum(库存) totalNum from 出入库表 where 出入库标识='入库' and DATEDIFF(day,出入库日期,'2020-2-20')>=0 group by 商品编号) t1
    left join (select 商品编号,sum(库存)totalNum from 出入库表 where 出入库标识='出库' and DATEDIFF(day,出入库日期,'2020-2-20')>=0 group by 商品编号) t2 on t1.商品编号=t2.商品编号
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 修改了问题 4月13日
  • 赞助了问题酬金10元 4月13日
  • 展开全部

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧