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