Sql server 通过递归CTE分解BOM
我试图通过递归CTE分解BOM,但仍然只得到锚行。但是,我尝试使用以下SQL代码:Sql server 通过递归CTE分解BOM,sql-server,common-table-expression,recursive-query,ax,Sql Server,Common Table Expression,Recursive Query,Ax,我试图通过递归CTE分解BOM,但仍然只得到锚行。但是,我尝试使用以下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
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
非常感谢您的帮助 您正在使用
您缺少的一件事是使用DataAreaId和PartitionId(如果使用AX 2012 R2)。查看定义的索引。很显然,我找到了它,只是使用了一个存储过程,并将BOMId参数传递给锚CTE的where语句。我正试图这样做。。。然而,我无法找到一个完整的例子。