BOM多级展开查询
**一、前言**
有很多用户想要**多级展开BOM**的SQL语句,社区里面也有相关的问题,有一些伙伴也已经提出过解决方案,但是都是要创建存储过程或者是函数,而且都是使用循环或者游标的方式来实现的。
这个也是解决问题的一种方案,当然没有问题,但是个人的想法:**SQL本质上是一种集合思维**,最高效的处理方案应该是使用集合思维的解决方案,而不是用传统编程的遍历思维。
所以在此提供一段本人编写的SQL语句,利用的是**递归CTE**的逻辑,也可以实现展开多级BOM,不需要创建存储过程或者函数即可执行、查询出结果。供大家参考。如果大家有更好的方案,也可以提出来,一起交流学习~
**二、解决方案**
首先介绍一下**CTE**,全名叫做公用表表达式(**C**ommon **T**able **E**xpression),是微软T-SQL的一种拓展。其他数据库(Oracle、MySQL等)不知道有没有支持,大家使用前请先确认此条件。然后T-SQL的CTE的基本语法大家可以参考此帖子学习一下:[https://www.cnblogs.com/ljhdo/p/4580347.html]() 里面的示例和讲解都挺详细的~
下面我先以**截图**的方式展示一下我编写的展开多级BOM的SQL语句,然后**具体的代码大家可以下载附件来看看!**
**2.1 SQL代码:
![image.webp](https://wenku.my7c.com/download/01007721279d84324ffa9b6b76251d2f946e.webp)**
![image.webp](https://wenku.my7c.com/download/0100bc5da7f49b544daf8ca2df79cfe9a57e.webp)
**2.2 结果验证:**
**在蓝海机械前台查询1.01.003的物料清单正查结果,如下:**
![image.webp](https://wenku.my7c.com/download/0100556b9994efac47bb88317cf6ec832574.webp)
**在数据库中查询1.01.003的物料清单展开结果,如下:**
![image.webp](https://wenku.my7c.com/download/0100213aef4144f34c678faa0d991e126eb2.webp)
**对比两张图可以得知,展开结果是一样的。**
**三、备注**
3.1 以上代码和结果示例都是在蓝海机械的测试账套中测试验证通过的,大家有蓝海机械测试环境的可以直接下载附件的SQL去执行即可得到结果。
注意:附件中有两个SQL文件,分别实现子项半成品如果有多个BOM版本的话,是根据它最新的BOM版本来展开,还是根据父项产品BOM中所指定的子项BOM版本来展开。大家留意一下附件中的SQL文件的名称即可区分!
3.2 虽然我提供的脚本是可以直接执行出结果的,但是建议大家,如果是有经常使用,或者是需要用到插件代码中,还是建议封装成存储过程或者函数会更方便一些,而且这样数据库引擎的查询执行效率会更高!
**至此,全文终。**
作者:imY
来源:金蝶云社区
原文链接:https://wenku.my7c.com/article/213984429721406208?productLineId=1
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
oracle有个start with的函数可以直接做递归,不知道sql server有没类似的
如果要算标准用量的话 怎么取数呢
对啊,没有附件。
用你的脚本多级展开BOM第3层多了些物料,还是不对。
您好! 没找到附件
大佬,为啥我用你的这个递归去展开所有的BOM去插入到一个新建的表会直接报错
oracle有个start with的函数可以直接做递归,不知道sql server有没类似的
BOM多级展开查询
**一、前言** 有很多用户想要**多级展开BOM**的SQL语句,社区里面也有相关的问题,有一些伙伴也已经提出过解决方案,但是都是要创...
点击下载文档
上一篇:通过MRP数据模型携带自定义字段到计划订单下一篇:SQL中删除单据
本文2024-09-16 17:18:27发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-14860.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章