1

我们的物料清单表有 3 个主要列:零件编号、父零件和级别代码(0 表示没有父项,3 表示子项的子项等)。

我试图基于单个部分进行查询并获取其所有子项及其子项,依此类推。

它看起来很简单,但我一直在努力解决这个问题。任何人都有他们可以提供的解决方案?

与往常一样,我感谢您的帮助。

根据 Randy 的要求,这里有更多信息:

PARPRT = 父 COMPRT = 组件

在屏幕截图中,所有组件都是“101002”物料清单的一部分。

稍后在表格下方,您将看到 COMPRT 中的每个组件都列在 PARPRT 列中,以及构成每个组件的组件。

我想在 BOM 中查询 '101002' 并且不仅获得 COMPRT 中 PARPRT = '101002' 的 4 个部分,而且还获得它们的 COMPRT 等等。

截屏

4

1 回答 1

0

感谢那些建议 CTE 的人。这正是我想要的。

这是经过反复试验后我得到的查询。

使用 PartDatabase

声明 @TheSinglePart CHAR(30) = '100001';

WITH BOM (PARPRT_02, COMPRT_02, QTYPER_02)
AS
(
-- 锚成员定义
SELECT e.PARPRT_02, e.COMPRT_02, e.QTYPER_02
FROM dbo.Product_Structure AS e
WHERE e.PARPRT_02 = @TheSinglePart
UNION ALL
-- 递归成员定义
SELECT e .PARPRT_02, e.COMPRT_02, e.QTYPER_02
FROM dbo.Product_Structure AS e
INNER JOIN BOM AS d
ON e.PARPRT_02 = d.COMPRT_02
)

SELECT *
FROM BOM;

于 2012-12-20T15:25:16.997 回答