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

 

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