【发布时间】:2022-11-30 23:35:18
【问题描述】:
我有经典的物料清单表:
零件编号 |子零件编号 |数量 1 2 2 1 3 4 1 5 8 2 8 13
当给定 PartId 时,我只想要那些不是零件的 SubPartId(PartId 列中不存在 SubPartId),它们是材料,因此它们在层次结构中最低。如果给定 PartId = 1,我希望查询返回 3、5、8,因为这些部分没有任何子部分,不知道该怎么做。
尝试简单的递归:
with BOM as (
SELECT parts.PartId,
parts.SubPartId
FROM Parts parts
WHERE parts.PartId = 1
UNION ALL
SELECT components.PartId,
components.SubPartId
FROM Parts components
JOIN BOM B
on B.SubPartId = components.SubPartId )
从这个查询中我得到 2 , 3 ,5 , 8 ,但我不想要 2 因为它不重要。
【问题讨论】:
标签: sql sql-server