BOM多级展开查询

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

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 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

如果要算标准用量的话 怎么取数呢


对啊,没有附件。


用你的脚本多级展开BOM第3层多了些物料,还是不对。


您好! 没找到附件


大佬,为啥我用你的这个递归去展开所有的BOM去插入到一个新建的表会直接报错


oracle有个start with的函数可以直接做递归,不知道sql server有没类似的

BOM多级展开查询

**一、前言**​ 有很多用户想要**多级展开BOM**的SQL语句,社区里面也有相关的问题,有一些伙伴也已经提出过解决方案,但是都是要创...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息