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

本文介绍使用SQLServer递归查询解决生产制造型企业ERP中BOM多阶查询问题,通过具体案例展示如何展开多层BOM进行生产计划制定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值