创建逻辑以在物料清单查询中填充较低级别的值

时间:2018-12-05 15:14:49

标签: sql-server

我正在处理一个查询,该查询显示一个物料清单,其中包含三个项目(父级和两个子级),父级交货期(可能因零件号而异),发货日期和数量。

我需要创建逻辑,以用与“父”发货日期加上“父”提前期相关的数量填充子数量列。

例如,对于12/05/2018的发货日期,``子代''数量(BOM第2级和第3级)应显示父/母产品的发货日期为2018年12月7日(发货日期加上交货时间) (2))。请参见下面的代码和屏幕打印。感谢任何建议。谢谢。

CREATE TABLE #RELEASE
(
ITEM_NO VARCHAR(25),
BOM_LEVEL INT,
LEAD_TIME INT,
SHIP_DATE DATETIME,
QUANTITY INT
);

INSERT #RELEASE VALUES ('A1', 1, 2, '12/05/2018', 100);
INSERT #RELEASE VALUES ('A2', 2, 0, '12/05/2018', 140);
INSERT #RELEASE VALUES ('A3', 3, 0, '12/05/2018', 140);
INSERT #RELEASE VALUES ('A1', 1, 2, '12/06/2018', 120);
INSERT #RELEASE VALUES ('A2', 2, 0, '12/06/2018', 160);
INSERT #RELEASE VALUES ('A3', 3, 0, '12/06/2018', 160);
INSERT #RELEASE VALUES ('A1', 1, 2, '12/07/2018', 140);
INSERT #RELEASE VALUES ('A2', 2, 0, '12/07/2018', 180);
INSERT #RELEASE VALUES ('A3', 3, 0, '12/07/2018', 180);
INSERT #RELEASE VALUES ('A1', 1, 2, '12/08/2018', 160);
INSERT #RELEASE VALUES ('A2', 2, 0, '12/08/2018', 0);
INSERT #RELEASE VALUES ('A3', 3, 0, '12/08/2018', 0);
INSERT #RELEASE VALUES ('A1', 1, 2, '12/09/2018', 180);
INSERT #RELEASE VALUES ('A2', 2, 0, '12/09/2018', 0);
INSERT #RELEASE VALUES ('A3', 3, 0, '12/09/2018', 0);

SELECT * FROM #RELEASE

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试一下,

SELECT c.*, '<-- Children-- | --Parent -->', p.*
From #RELEASE c
    LEFT OUTER JOIN #RELEASE p ON c.QUANTITY = p.QUANTITY 
                                AND p.BOM_LEVEL = 1
                                AND c.SHIP_DATE = DATEADD(DAY, -p.LEAD_TIME, p.SHIP_DATE)
WHERE c.BOM_LEVEL != 1