【问题标题】:Exploding BOM through recursive CTE通过递归 CTE 分解 BOM
【发布时间】:2013-12-01 23:56:24
【问题描述】:

我正在尝试通过递归 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!

非常感谢任何帮助!

【问题讨论】:

    标签: sql-server common-table-expression recursive-query ax


    【解决方案1】:

    嗯,显然我找到了,只是使用了一个存储过程,并将 BOMId 参数传递给了 Anchor CTE 的 where 语句。

    【讨论】:

      【解决方案2】:

      您正在使用Common Table Expressoins

      您缺少的一件事是使用 DataAreaId 和 PartitionId(如果使用 AX 2012 R2)。
      查看定义的索引。

      【讨论】:

      • 我正在尝试这样做...但是我找不到完整的示例。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多