产品配件清单查询示例.sql
INSERT Item SELECT 1,N'A产品',0.01
UNION ALL SELECT 2,N'B产品',0.02
UNION ALL SELECT 3,N'C产品',0.10
UNION ALL SELECT 4,N'D配件',0.15
UNION ALL SELECT 5,N'E物料',0.03
UNION ALL SELECT 6,N'F物料',0.01
UNION ALL SELECT 7,N'G配件',0.02
CREATE TABLE Bom(ItemID int,ChildId int)
INSERT Bom SELECT 1,4
UNION ALL SELECT 1,7 --A产品由D配件和G配件组成
UNION ALL SELECT 2,1
UNION ALL SELECT 2,6
UNION ALL SELECT 2,7 --B产品由F物料及G配件组成
UNION ALL SELECT 4,5
UNION ALL SELECT 4,6 --D配件由F物料组成
UNION ALL SELECT 3,2
UNION ALL SELECT 3,1 --C产品由A产品和B产品组成
GO
CREATE FUNCTION f_Bom(
@ItemIDs varchar(1000), --要查询物料清单及生产量的产品编号列表(逗号分隔)
@Num int --要生产的数量
)RETURNS @t TABLE(ItemID int,ChildId int,Nums int,Level int)
AS
BEGIN
DECLARE @Level int
SET @Level=1
INSERT @t SELECT a.ItemID,a.ChildId,ROUND(@Num/(1-b.Wast),0),@Level
FROM Bom a,Item b
WHERE a.ChildId=b.ID
AND CHARINDEX(','+RTRIM(a.ItemID)+',',','+@ItemIDs+',')>0
WHILE @@ROWCOUNT>0 and @Level<140
BEGIN
SET @Level=@Level+1
INSERT @t SELECT a.ItemID,b.ChildId,ROUND(a.Nums/(1-c.Wast),0),@Level
FROM @t a,Bom b,Item c
WHERE a.ChildId=b.ItemID
AND b.ChildId=c.ID
AND a.Level=@Level-1
END
RETURN
END
GO
--调用函数展开产品1、2、3的结构及计算生产10个产品时,各需要多少个配件
SELECT a.ItemID,ItemName=b.Name,
a.ChildId,ChildName=c.Name,
a.Nums,a.Level
FROM f_Bom('1,2,3',10) a,Item b,Item c
WHERE a.ItemID=b.ID
AND a.ChildId=c.ID
ORDER BY a.ItemID,a.Level,a.ChildId
产品配件清单查询示例.sql相关推荐
- sql子查询示例_SQL更新查询示例说明
sql子查询示例 In this article, we're going to learn how to use the SQL update statement - what it is, wha ...
- Hibernate Native SQL查询示例
Hibernate Native SQL查询示例 欢迎使用Hibernate Native SQL Query示例教程.我们在前面的文章中研究了Hibernate查询语言和Hibernate Crit ...
- sql子查询示例_学习SQL:SQL查询示例
sql子查询示例 In the previous article we've practiced SQL, and today, we'll continue with a few more SQL ...
- Hibernate本机SQL查询示例
Welcome to the Hibernate Native SQL Query example tutorial. We looked into Hibernate Query Language ...
- oracle 转成sql server,怎样把Oracle查询转换为SQL Server
怎样把Oracle查询转换为SQL Server 来源:中国IT实验室 编辑:Anne 时间:2008年08月22日 在把Oracle查询转换为SQL Server的时候要特别当心一些不容易注 ...
- linux查询数据库sql,SQL Server 跨数据库查询
基本语句 SELECT * FROM 数据库A.dbo.表A a, 数据库B.dbo.表B b WHERE a.field=b.field "DBO"可以省略 如 SELECT * ...
- php mysql 字段不为空_Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?...
Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null? 先上两种实现方式的实例: $querys["house_type_image" ...
- MongoDB 教程三: 高级查询 (SQL到MongoDB映射表)
查询接口 对于查询操作,MongoDB 提供了 db.collection.find() 方法.这个方法接收查询条件和映射两个条件并且返回一个指向匹配文档的 游标 .你可以使用 limits, ski ...
- Hibernate命名查询示例 - @NamedQuery
Hibernate命名查询示例 - @NamedQuery 欢迎使用Hibernate命名查询示例教程.我们看到了如何在Hibernate中使用HQL和Native SQL Query.如果有很多查询 ...
最新文章
- Linux shell 学习笔记(6)— vim 编辑器使用方法及技巧
- eclipse 环境下 FreeMarker 编辑器插件
- python详细安装教程 path-Python解释器安装教程以及环境变量配置
- 张宇概率论与数理统计pdf_【书籍篇】张宇概率论与数理统计9讲
- 合理提升WEB前端性能
- python 多线程讲解(如何实现多线程,递归锁,互斥锁,信号量,事件等)
- Jass 技能模型定义(转)
- *【CF#633B】 A Trivial Problem(二分或枚举)
- 理论基础 —— 索引 —— 稠密索引
- 全军出击机器人进房间_科沃斯扫地机器人T8 POWER/MAX开箱测评推荐
- STL常用函数总结-queue+priority_queue
- Julia :PyPlot的plot_date
- 前端项目(1)--《学成在线》简单首页
- ENVI学习总结(十)——遥感图像监督分类
- 谷歌大牛Jeff Dean撰文:深度学习研究的黄金十年
- 时间序列复杂性的度量—近似熵和样本熵
- mysql修改校对集_mysql数据库的基本操作(增删改查、字符集、校对集)
- Linux中shell编程——编写shell脚本,实现功能:在用户输入年、月后自动打印出对应年月的日
- 19、Jetson Xavier NX使用yolov5对比GPU模型下的pt、onnx、engine 、 DeepStream 加速性能
- 宏基aspire拆机触摸_Acer宏碁(Acer宏碁)Acer S5-371-76GS超极本拆解图评测-ZOL中关村在线...