SQL Server 递归的用法 --经典案例:部门上下级问题 (正航T8)

sql Server 递归的经典案例是解决部门上下级的问题,当时接触到递归的时候是用来处理生产制造型企业ERP关于查询BOM上下级的问题。

当时遇到的现实场景是:

不执行MRP的情况下,生产型企业的销售订单可以直接转出到生产制令单下达到车间,但是在BOM存在多阶的情况下,销售订单转生产制令单只能转最外层的母件的生产制令单,想展开多层bom的生产计划只能执行MRP。

当时就想在销售订单上增加一个GridView,将多层bom的二阶半成品拉出来。

if OBJECT_ID('tempdb..#TT')is not NULL
drop table #TT
SELECT * INTO #TT
FROM
(
        SELECT
                A.BOMKeyId
               ,A.MaterialId
               ,B.SubMaterialId
               ,B.BaseQty
               ,B.UnitQty
       FROM BOMMainInfo A
       LEFT JOIN BOMSubMatInfo B      ON A.BOMKeyId = B.BOMKeyId
)T ;
WITH #AA (BOMKeyId,MaterialId,SubMaterialId,BaseQty,UnitQty) AS
(
       SELECT
                BOMKeyId
               ,MaterialId
               ,SubMaterialId
               ,BaseQty
               ,UnitQty
       FROM #TT
       WHERE BOMKeyId = 'B00000913401001'
       UNION ALL
       SELECT
        A.BOMKeyId
        ,A.MaterialId
        ,A.SubMaterialId
        ,A.BaseQty
        ,A.UnitQty
       FROM #TT A
       INNER JOIN #AA B ON A.MaterialId = B.SubMaterialId
)
SELECT * FROM #AA
drop table #TT

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章