Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 通过递归CTE分解BOM_Sql Server_Common Table Expression_Recursive Query_Ax - Fatal编程技术网

Sql server 通过递归CTE分解BOM

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

我试图通过递归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 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语句。

我正试图这样做。。。然而,我无法找到一个完整的例子。