我建立了一个递归CTE来散发我的物料清单,但是许多物料在物料清单中都有“幻像”零件。我需要用其物料清单替换“幻像”项目。幻影项目没有实际项目,但是我们将一组项目分组的一种方式。一些幻影项目也与其他幻影项目一起构建,因此它确实需要递归。
我试图简单地用表本身的连接替换幻像项目,但是当存在由其他幻像项目组成的幻像项目时遇到问题
SELECT
c.TopLevelItem,
c.ItemPath,
c.ParentItem,
ComponentItem = x.ComponentItem,
ComponentQuantity = x.ComponentQuantity,
c.ComponentItemLevel
FROM KOG_Datamart.dim.CurrentProductStructure c
LEFT JOIN
(
SELECT
ParentItem,
ComponentItem,
ComponentQuantity
FROM KOG_Datamart.dim.CurrentProductStructure
JOIN dim.Items i
ON TopLevelItem = i.ItemNumber
WHERE
i.ItemClass = 'phantom'
AND ParentItem <> ComponentItem
GROUP BY
ParentItem,
ComponentItem,
ComponentQuantity
) x
ON x.ParentItem = c.ParentItem
WHERE
x.ParentItem IS NOT NULL
AND c.ParentItem <> c.ComponentItem
由于上述代码将复制带有多个幻像的项目,因此我相信我将需要使用递归cte替换所有幻像,但是我对递归还很陌生。
我在google文档中列出了当前状态,幻像项目示例列表和未来状态的链接,谢谢您的帮助!
https://docs.google.com/spreadsheets/d/1ju0p1TWJcTksl4wL-btRfHmwQ5TV6a_m7wencFFAngw/edit?usp=sharing