产品配件清单查询示例.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.如果有很多查询 ...
最新文章
- JDK源码解析 Comparator 中的策略模式
- [nodejs]国内npm安装nodejs modules失败的几个解决方案
- java web中出现莫名错误,出现错误标识和红线但不影响运行。
- 智行火车票能否把用户的敏感信息屏蔽?
- 安装PetShop后调试的诸多问题
- 微信和QQ,终于可以互通了!
- 27学java能找到工作吗_今年27,想自学Java,转行程序员,请问可行吗?
- 和的区别?以及 0x0f 的含义
- VS2013之error C3130 内部编译器错误的解决
- Win32反汇编(三)深层次的了解各种转移指令:IF语句有符号与无符号跳转
- (论文)Persuading Customers to Buy Early: The Value of Personalized
- 大数据高级开发工程师——Spark学习笔记(9)
- java 系统资源不足_[InteliJ IDEA] 系统资源不足
- 7-14 电话聊天狂人 (25分)
- 龙芯7A2000 CAN调试
- k8s之存储抽象nfs挂载
- Java中将base64编码字符串转换为图片
- 重新认识java(零) --- 不积跬步无以至千里
- 使用计算机处理信息 一般要经历,高一信息技术课程总复习
- Swift Web 开发之 Vapor - 模版 Leaf(三)