sql - SQL 中的递归 CTE 以替换物料清单中的虚拟构建
问题描述
我已经建立了一个递归 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 来替换所有幻象,但我对递归相当陌生。
我在谷歌文档中列出了当前状态、幻像列表示例和未来状态的链接,任何帮助将不胜感激!
https://docs.google.com/spreadsheets/d/1ju0p1TWJcTksl4wL-btRfHmwQ5TV6a_m7wencFFAngw/edit?usp=sharing
解决方案
推荐阅读
- automation - Terraform 更新访问策略
- python - 保存时的 VS Code lint 在远程 (pylint) 上不起作用
- typescript - 带有 Svelte src 的 Svelte-kit 和 NPM 模块
- c - 重新分配结构
- ipfs - ipfs 文件 ls 似乎无法配置为专用网络
- reactjs - MUI 数据表,隐藏搜索图标但仍显示搜索栏
- django - Django Form 将类添加到 div、输入字段和标签
- javascript - 引导弹出窗口无法正常工作且没有错误
- java - Android Studio 错误:Activity 必须扩展 android.app.activity
- java - Spring CircuitBreakerRetryPolicy:为所有请求打开电路