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