需求

最近在做一个MRP的项目,需要根据生产下达的计划从原始无聊表中分解出成品所需要的原材料和数量.

参考

http://www.cnblogs.com/xqhppt/archive/2011/02/15/1955366.html

http://www.cnblogs.com/guoysh1987/archive/2011/12/23/2299379.html

代码实现

SQL数据表结构

CREATE TABLE [dbo].[cProduction]([ID] [int] IDENTITY(1,1) NOT NULL,[Production] [varchar](max) NULL,[MaterialNo] [varchar](100) NULL,[CompQuan] [float] NULL
) ON [PRIMARY]GO

View Code

INSERT INTO cProduction VALUES('JCV3311149605','A5E01194561',1)
INSERT INTO cProduction VALUES('JCV3311149605','JCV2511141838',1)
INSERT INTO cProduction VALUES('JCV3311149605','JCV2511141929',1)
INSERT INTO cProduction VALUES('JCV2511141838','JCV3311800707',1)
INSERT INTO cProduction VALUES('JCV3311800707','JCVRM00040003',1)
INSERT INTO cProduction VALUES('JCV3311800707','JCVRM00040004',1)

View Code

SQL代码实现

假设对产品JCV3311149605下达的计划为1000

with cte as(
select [Production],[MaterialNo],[CompQuan]*1000 as quan,1 as lvl,path=CAST(CompQuan AS INT) from cProduction where Production = 'JCV3311149605'
union all
select d.[Production],d.[MaterialNo],C.path*d.[CompQuan]*1000 as quan,lvl+1,path=CAST(D.CompQuan*c.path AS int)  from cte c inner join cProduction d on c.materialno = d.Production
) select * from cte OPTION(MAXRECURSION 0) 

View Code

效果如下,结果正确:

转载于:https://www.cnblogs.com/youmeng/p/5026100.html

SQL递归查询(with cte as) 物料分解相关推荐

  1. SQL递归查询(with as)

    SQL递归查询(with cte as) with cte as (     select Id,Pid,DeptName,0 as lvl from Department     where Id ...

  2. SQL SERVER 2005 CTE(通用表达式)

    SQL Server2005数据库查询中使用CTE Builder.com.cn 通用表表达式(CTEs)是SQLServer2005的一项新功能.它们类似于alias(如在SELECTT1.*FRO ...

  3. SQL递归查询树型分类数据

    目录 前言 1.准备分类数据 2.递归原理 3.实现 4.结合mybatis查询 总结 前言 相信大家在处理业务的时候经常会遇到分类数据,当面对这种情况时该如何处理呢?在这里我使用了两种方式解决:一种 ...

  4. sql递归查询上级_递归的实际业务场景之MySQL 递归查询

    喜欢就点个赞呗! 源码<--请点击此处查看 引入 当我看到一些评论时,例如下面的样子.我挺好奇这个功能是怎么样做出来的.进过查阅资料,发现这其实是 MySQL 的递归操作.下面就让我操作一下怎么 ...

  5. SQL递归查询上级部门树

    SQL递归查询上级部门树,sql2008以上支持with语法. 在做预算归口部门.使用部门的时候,需要递归查询出部门的逐级上级sParent. SQL脚本: with tmp as (select * ...

  6. mysql 在不同的数据库间查询语句_有关数据库SQL递归查询在不同数据库中的实现方法...

    本文给大家介绍有关数据库SQL递归查询在不同数据库中的实现方法,具体内容请看下文. 比如表结构数据如下: Table:Tree ID Name ParentId 1 一级  0 2  二级 1 3  ...

  7. oracle 递归查询,Oracle SQL递归查询教程

    在oracle 中可以通过使用start with - connect by prior - 实现递归查询.如果你对递归查询很 模糊了话,或许下面的示例将会帮助你更好的理解oracle SQL 递归查 ...

  8. sql oracle 递归查询语句,oracle递归函数 oracle中SQL递归查询

    关于oracle递归调用的自定义函数如何结束 比如存储过程a中有b,b中含a.用return结束判断,执行还是锁表,怎么解决 关于oracle递归调用的自定义函数如何结束 可以调用. C语言最基本的模 ...

  9. SQL 递归查询所有父子节点

    原 SQL 递归查询所有父子节点 2016年05月16日 22:57:16 名贤集 阅读数 21628 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net ...

最新文章

  1. 学会使用函数式编程的程序员(第2部分)
  2. SSH下的组合批量增加
  3. CentOS自动挂载光驱和U盘
  4. UDP/TCP测试工具
  5. Windows下Core_Audio_APIs的使用简介
  6. MySQL 存储引擎(MyISAM、InnoDB、NDBCluster)
  7. 试题 历届试题 带分数(全排列)
  8. CSS3 -webkit-transition(属性渐变)
  9. 初中数学知识点总结_初中数学知识点总结大全_经典版_
  10. CF1223F. Stack Exterminable Arrays
  11. 不断的感悟、不断的学习、不断的成长
  12. python如何实现分布式_Python如何快速实现分布式任务
  13. 理光m2554进入维修_理光DX2432C,基士得耶6201供墨检测代码,看完马上解决代码故障...
  14. 关于弱电工程图纸的几个常见问题
  15. REST+EJB+JPA 框架在 Eclipse+TomEE 的开发环境搭建
  16. Java 自带的加密类MessageDigest类(加密MD5和SHA)
  17. JAVA文件上传限制
  18. 半监督学习:主动学习、纯半监督学习和直推学习区别和联系
  19. 【Python 无损放大图片】——支持JPG/PNG 可将图片无损放大上万像素
  20. linux怎样收集系统信息,Linux下收集系统和硬件信息的10个实用命令

热门文章

  1. 永磁材料介绍和ANSYS Workbench永磁体仿真
  2. 判断是否是手机号码的方法
  3. 大规模线性方程组求解
  4. Linux中update和upgrade的区别
  5. 经典风险因子模型 对于中国股票市场定价解释能力初探
  6. 去掉Excel 单元格里的字符后面的空格
  7. 几百块的投影仪靠谱吗?性能怎么样?
  8. Hadoop中Namenode单点故障的解决方案
  9. OPENMP学习笔记(1)——简介,模型,运行
  10. xxlJob定时任务,文章的上下架