针对这个库存问题大家谁有解决方案吗?实在是想破脑袋想不出方法解决了

问题是这样的,现在有一张表,里面主要信息有厂别、料号、供应商、物料每日计划量、物料的每天存量和日期,现在需要通过当前日期的现有量来减去当日及之后的计划量来计算库存日期,也就是当前物料存量还能使用几天,物料计划量会提前计划且不固定数量,存量则每天不一样根据每天的到料加之前存量,这部分不需要计算,直接从源系统取过来就行了,我知道逻辑是当日存量减去未来几天计划量的总和,它大于0的最小差值那一天,用当日减去最后一天就是它们的库存天数,但是怎么去写sql我就不知道了,希望大神们能指导指导,明天要交报表了,拜托了大家

image.png

FineReport Kanyechukwuekel 发布于 2023-11-14 20:58
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
shirokoLv6资深互助
发布于2023-11-15 10:41

image.png

我理解的你的数据类似左上角(如果不是你就先弄成这样),然后你需要确定一个最大计划天数,比如我定的5天,然后将leftjoin未来5天的计划数,累计相减求出剩余数,找到第一个小于等于零的,放回到上面

最佳回答
0
孤陌Lv6资深互助
发布于2023-11-15 08:15

这个不用写SQL把   逐层累减就可以了

  • Kanyechukwuekel Kanyechukwuekel(提问者) 因为这个报表还要做个预警推送,所以觉得SQL写会比较好,不过还是想知道怎么在报表上逐层累减
    2023-11-15 09:45 
最佳回答
0
快乐星光Lv5中级互助
发布于2023-11-15 10:27

这个用存储会好高一点,需要用到游标。大概逻辑如下图。

image.png

最佳回答
0
JL98Lv6中级互助
发布于2023-11-15 10:48(编辑于 2023-11-15 10:50)

SQL先计算库存的累计求和,之后关联库存,以MSQL为例

----------------------------------------------------------------------------------

WITH T1 AS (

SELECT  '2023-11-15' AS 日期 ,'手机'AS 分类, '15' AS 需求数量

UNION ALL 

SELECT  '2023-11-16' AS 日期 ,'手机'AS 分类, '12' AS 需求数量

UNION ALL 

SELECT  '2023-11-17' AS 日期 ,'手机'AS 分类, '12' AS 需求数量

UNION ALL 

SELECT  '2023-11-15' AS 日期 ,'电脑'AS 分类, '11' AS 需求数量

UNION ALL 

SELECT  '2023-11-16' AS 日期 ,'电脑'AS 分类, '14' AS 需求数量

UNION ALL 

SELECT  '2023-11-17' AS 日期 ,'电脑'AS 分类, '8' AS 需求数量

)

,

T2 AS (

SELECT  '2023-11-15' AS 日期 ,'手机'AS 分类, '27' AS 库存

UNION  ALL

SELECT  '2023-11-15' AS 日期 ,'电脑'AS 分类, '24' AS 库存

)

,

T3 AS (

SELECT 

    日期,

    需求数量,

分类,

    (SELECT SUM(需求数量) FROM T1 WHERE 日期<=A.日期 AND 分类=A.分类) AS 需求数量累计

FROM T1 AS A

)

SELECT T2.分类,MIN(T3.日期) AS 日期 FROM 

T2 

LEFT JOIN T3 ON T2.日期<=T3.日期  AND T2.分类=T3.分类 AND T2.库存 - T3.需求数量累计 < 0 

GROUP BY  T2.分类

image.pngimage.png

image.png

  • 5关注人数
  • 354浏览人数
  • 最后回答于:2023-11-15 10:50
    请选择关闭问题的原因
    确定 取消
    返回顶部