通过递归 CTE 分解 BOM
Posted
技术标签:
【中文标题】通过递归 CTE 分解 BOM【英文标题】:Exploding BOM through recursive CTE 【发布时间】:2013-12-01 23:56:24 【问题描述】:我正在尝试,但我仍然只获得锚行。但是,我正在尝试使用此 SQL 代码:
With BOMTree_CTE
AS
(
--Anchor
Select
B.BOMID
,B.ITEMID
,B.LINENUM
,B.position
,B.BOMQTY
,B.INVENTDIMID
,0 as 'CurrentLevel'
,BV.BOMID as BVBomId
,BV.ITEMID
FROM BOM B Left Join BomVersion BV On B.ItemID = BV.ItemId
Union All
Select
BB.BOMID
,BB.ITEMID
,BB.LINENUM
,BB.position
,BB.BOMQTY
,BB.INVENTDIMID
,CurrentLevel+1
,CAST('1' as nvarchar(20))
,CAST('2' as nvarchar(20))
From Bom BB Join BOMTree_CTE C On BB.BOMID = C.BVBomId
)
select * from BOMTree_CTE C
我不想通过 X++ 做,我需要通过 SQL!
非常感谢任何帮助!
【问题讨论】:
【参考方案1】:嗯,显然我找到了,只是使用了一个存储过程,并将 BOMId 参数传递给了 Anchor CTE 的 where 语句。
【讨论】:
【参考方案2】:您正在使用Common Table Expressoins。
您缺少的一件事是使用 DataAreaId 和 PartitionId(如果使用 AX 2012 R2)。 查看定义的索引。
【讨论】:
我正在尝试这样做...但是我找不到完整的示例。以上是关于通过递归 CTE 分解 BOM的主要内容,如果未能解决你的问题,请参考以下文章