<= (200+300+100) equal 3 days on 1/23/2025. 600 <= (300+100) equal 2 days
inventory | forecast | W01 | ||
---|---|---|---|---|
700 | 400 | W01 | 123456 | |
600 | 200 | W01 | 123456 | |
400 | 300 | W01 | 123456 | |
450 | 100 | W01 | 123456 | |
50 | 300 | 输出 |
-location
SELECT
"A"."LOCATION",
"A"."MATERIAL",
"A"."START_DATE",
"A"."INVENTORY",
"A"."FORECAST",
(SELECT SUM("B"."FORECAST")
FROM "B"
WHERE "B"."START_DATE" >= "A"."START_DATE" ) AS "FUTURE_DEMAND",
CASE
WHEN (SELECT SUM("B"."FORECAST")
FROM "B"
WHERE "B"."START_DATE" >= "A"."START_DATE ) = 0 THEN NULL
ELSE "A"."INVENTORY" /
(SELECT SUM ("B"."FORECAST")
FROM "B"
WHERE "B"."START_DATE" >= "A"."START_DATE
END AS "DOS"
FROM "A"
ORDER BY
"A"."START_DATE"
在您的输出中,因为forecast | dos | W01 | 123456 | ||
---|---|---|---|---|---|
400 | 3 | W01 | 123456 | 1/24/2025 | |
200 | 2 | W01 | 123456 | 1/25/2025 | |
300 | 2 | W01 | 123456 | 1/26/2025 | |
100 | 2 | W01 | 123456 | 1/27/2025 | |
300 | 0 |
1/26/2025
I已通过递归将锚定为0 dos的递归对其进行,然后比较后续日期的每一行,直到预测的总和> = = = = = = = =。
在外部查询中,所有列都通过连接DOS_CTE和表格与DOS一起获取。1/26/2025