我们的物料清单表有3个主要栏目:部件号,父部件和等级代码(0表示没有父母,3表示孩子的孩子,等等)。
我正在尝试基于单个部分进行查询并获取其所有子项及其子项,依此类推。
它似乎很简单,但我一直在努力解决这个问题。任何人都有他们可以提供的解决方案吗?
一如既往,我很感激帮助。
根据兰迪的要求,这里有更多信息:
PARPRT =家长 COMPRT =组件
在截屏中,所有零部件都是'101002'的物料清单的一部分。
在表格的后面,您将看到PARPRT列中列出的COMPRT中的每个组件以及使每个组件都成为组件的组件。
我想查询物料清单'101002',不仅可以获得COMPRT中的4个部分PARPRT ='101002',还可以获得COMPRT等等。
答案 0 :(得分:0)
感谢那些建议CTE的人。这正是我想要的。
以下是我在经过一些试验和错误后最终得到的查询。
USE PartDatabase
GO
DECLARE @TheSinglePart CHAR(30)='100001';
带BOM(PARPRT_02,COMPRT_02,QTYPER_02)
AS
(
- 锚定成员定义
SELECT e.PARPRT_02,e.COMPRT_02,e.QTYPER_02
来自dbo.Product_Structure AS e
在哪里e.PARPRT_02 = @TheSinglePart
UNION ALL
- 递归成员定义
SELECT e.PARPRT_02,e.COMPRT_02,e.QTYPER_02
来自dbo.Product_Structure AS e
INNER JOIN BOM as d
ON e.PARPRT_02 = d.COMPRT_02
)
SELECT *
从BOM;