社区首页 >问答首页 >用幻影BoM BoM生产BoM爆炸钻

用幻影BoM BoM生产BoM爆炸钻
EN

Stack Overflow用户
提问于 2016-08-02 07:30:51
回答 1查看 653关注 0票数 3

这是我的第一篇帖子,尽管Stack溢出到目前为止帮助了我很多次。希望这次也是这样。

我尝试使用在线找到的源代码和代码构建循环查询和UDF,但没有成功。只是越来越困惑了。

我所拥有的:

  • 项表-带有项目号和BoM号
  • BoMLines表-带Bom No和所有子项无或幻影BoM No's

我想要的是:

基本上,我需要列出所有的项目及其所有的子项目数量每。每件事似乎都没问题,直到我发现我们也有幻影(Bom在叫其他的‘s),这些必须“钻”到项目级别。

预期结果: 屏幕截图

,它是有BoM的所有项目列表的表,爆炸到下一个项目!!

为了更容易地展示我对DDL的追求,包括:

代码语言:javascript
代码运行次数:0
复制
-- Drop table Items if exist
IF OBJECT_ID('test.Items') IS NOT NULL
    DROP TABLE test.Items;

-- Create Items table
CREATE TABLE test.Items (
  ItemID varchar(30) COLLATE Latin1_General_CI_AS NOT NULL,
  Description varchar(100) COLLATE Latin1_General_CI_AS NOT NULL,
  Prod_BOM_No varchar(30) COLLATE Latin1_General_CI_AS NULL,
  PRIMARY KEY CLUSTERED (ItemID)
    WITH (
      PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF,
      ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
ON [PRIMARY]

-- Drop table BOMLines if exist
IF OBJECT_ID('test.BOMLines') IS NOT NULL
    DROP TABLE test.BOMLines;

-- Create BOMLines table
CREATE TABLE test.BOMLines (
  AutoID int IDENTITY(1, 1) NOT NULL,
  Prod_BOM_No varchar(30) COLLATE Latin1_General_CI_AS NOT NULL,
  Type tinyint DEFAULT 1 NOT NULL,
  No_ varchar(30) COLLATE Latin1_General_CI_AS NOT NULL,
  Qty_Per decimal(18, 8) DEFAULT 1.5 NULL,
  PRIMARY KEY CLUSTERED (AutoID)
    WITH (
      PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF,
      ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
ON [PRIMARY]

还可以使用DML来显示我所处理的数据的示例:

代码语言:javascript
代码运行次数:0
复制
--Insert Test Items to Items table
INSERT INTO 
  test.Items
(ItemID, Description, Prod_BOM_No) 
VALUES 
('I1001', 'Item I1001', 'BM1010'), ('I1002', 'Item I1002', 'BM1020'), ('I1003', 'Item I1003', 'BM1030'), 
('I1004', 'Item I1004', 'BM1040'), ('I1005', 'Item I1005', 'BM1050'), ('I1006', 'Item I1006', 'BM1060'), 
('I1007', 'Item I1007', 'BM1070'), ('I1008', 'Item I1008', 'BM1080'), ('I1009', 'Item I1009', 'BM1090'), 
('I1010', 'Item I1010', 'BM1100'), ('I5001', 'Item I5001', ''), ('I5002', 'Item I5002', ''), 
('I5003', 'Item I5003', ''), ('I5004', 'Item I5004', ''), ('I5005', 'Item I5005', ''), 
('I5006', 'Item I5006', ''), ('I5007', 'Item I5007', ''), ('I5008', 'Item I5008', ''), 
('I5009', 'Item I5009', ''), ('I5010', 'Item I5010', ''), ('I5011', 'Item I5011', ''), 
('I5012', 'Item I5012', ''), ('I5013', 'Item I5013', ''), ('I5014', 'Item I5014', ''), 
('I5015', 'Item I5015', ''), ('I5016', 'Item I5016', ''), ('I5017', 'Item I5017', ''), 
('I5018', 'Item I5018', ''), ('I5019', 'Item I5019', ''), ('I5020', 'Item I5020', '');

-- Insert test BOMs to BOMLines table
INSERT INTO 
  test.BOMLines
( Prod_BOM_No, No_, [Type])
VALUES 
('BM1010', 'I5001', 1), ('BM1020', 'I5002', 1), ('BM1020', 'I5003', 1), 
('BM1030', 'BM1031', 2), ('BM1030', 'I5004', 1), ('BM1031', 'I5005', 1), 
('BM1040', 'I5006', 1), ('BM1050', 'I5007', 1), ('BM1050', 'BM1051', 2), 
('BM1051', 'BM1052', 2), ('BM1052', 'I5008', 1), ('BM1060', 'I5009', 1), 
('BM1060', 'I5010', 1), ('BM1060', 'I5011', 1), ('BM1060', 'BM1061', 2), 
('BM1061', 'I5012', 1), ('BM1061', 'I5013', 1), ('BM1061', 'BM1062', 2), 
('BM1062', 'I5013', 1), ('BM1062', 'I5014', 1), ('BM1070', 'I5015', 1), 
('BM1080', 'I5016', 1), ('BM1080', 'I5017', 1), ('BM1080', 'I5018', 1), 
('BM1090', 'I5019', 1), ('BM1100', 'I5020', 1);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-02 08:12:20

您可以使用递归公共表表达式

代码语言:javascript
代码运行次数:0
复制
;With BOMs (Prod_BOM_No, Type, No_, Qty_Per) AS
(
    select Prod_BOM_No, Type, No_, Qty_Per
    from test.BOMLines
    union all
    select test.BOMLines.Prod_BOM_No, BOMs.Type, BOMs.No_, convert(decimal(18, 8), test.BOMLines.Qty_Per * BOMs.Qty_Per) as Qty_Per
    from test.BOMLines
    join BOMs 
    on test.BOMLines.Type = 2 and test.BOMLines.No_ = BOMs.Prod_BOM_No
)
select ItemID, Description, No_, Qty_Per
from test.Items
join BOMs
on test.Items.Prod_BOM_No = BOMs.Prod_BOM_No
    and Type = 1
order by 1, 2
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38724728

复制
相关文章
在Python中进行运行时类型检查
Python 是一门动态类型语言,没有编译器对变量类型正确性的检查与保证,这也意味着经常需要在运行时对变量的类型进行校验,尤其是在后端接口开发中,毕竟前端传入的数据往往是不可控的。
杜逸先
2023/05/12
7470
PHP脚本运行时间:
作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 代码: 效果: ---- 代码: <style> body{ background:#ccc;
贵哥的编程之路
2022/09/23
1.5K0
PHP脚本运行时间:
运行命令出现错误 /bin/bash^M: bad interpreter: No such file or directory
-bash: ./build.sh: /bin/bash^M: bad interpreter: No such file or directory
HoneyMoose
2023/08/28
7140
运行命令出现错误 /bin/bash^M: bad interpreter: No such file or directory
AQS中的cancelAcquire何时会运行
哈喽,我是子牙。十余年技术生涯,一路披荆斩棘从技术小白到技术总监到JVM专家到创业。技术栈如汇编、C语言、C++、Windows内核、Linux内核。特别喜欢研究虚拟机底层实现,对JVM有深入研究。分享的文章偏硬核,很硬的那种。
子牙老师
2022/05/11
4960
AQS中的cancelAcquire何时会运行
Archiva 运行时提示 JAXBException 错误
你可以尝试使用 Archiva 自己进行编译,或者部署到 1.8 的 JDK 版本上,或者等到 Archiva 3.0 的版本后再开始用吧。
HoneyMoose
2022/06/14
6050
Archiva 运行时提示 JAXBException 错误
cmake:在Makefile中运行ant脚本
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/51832822
10km
2019/05/25
1.7K0
ReactNative_在终端terminal运行程序经常出现的问题
1、Unable to resolve modules lodash  (这里举例lodash,这个lodash也可以是别的。意思就是缺少当前模块,所以需要安装)
mikimo
2022/07/20
7260
检查高 CPU 进程在 Linux 上运行时间的脚本
给 long-running-cpu-proc.sh 设置可执行的 Linux 文件权限。
用户4988085
2021/09/15
2.1K0
解决"QWindowsContext: OleInitialize() failed"运行时错误
OleInitialize是一个Windows API函数。它的作用是在当前单元(apartment)初始化组件对象模型(COM)库,应用程序必须在调用COM库函数之前初始化COM库。每个线程不能初始化多次。
Qt君
2019/11/04
2.7K0
tensorflow gpu 运行出现OOM错误
0 问题 今天跑了一下程序,报了如下的OOM错误 ResourceExhaustedError: OOM when allocating tensor with shape[258000,768] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc [[{{node rpn_model/rpn_conv_shared/convolution}} = Conv2D[T=DT_FLOAT,
莫斯
2020/09/09
5.6K0
什么是编译错误,运行时错误及逻辑错误?
程序的错误主要分成三种: 编译链接错误(语法错误); 编译链接错误又分成编译错和链接错。 编译错就是普通意义上的语法错,编译器进行语法检查不通过,也就是程序违背了计算机语言的语法,例如:括号不匹配、变量名拼写错误、用保留字定义变量名等; 链接错是指程序通过了语法检查,但是无法生成可执行文件,最常见的是链接找不到lib库。初学者有时写了函数的声明,但是缺少函数的定义,此时就会出现链接错。 运行错误; 运行错是程序可以执行,但是在执行过程中发生异常,提前退出程序。最常见的是指针越界,打开文件失败
用户1148881
2018/01/16
9.4K0
Python 运行时遇到的这些错误
对于刚入门的Python新手,在学习过程中运行代码是或多或少会遇到一些错误,刚开始可能看起来比较费劲。随着代码量的积累,熟能生巧当遇到一些运行时错误时能够很快的定位问题原题。下面整理了在Python运行中常见的错误,希望能够帮助到大家。
小小科
2020/07/15
1K0
解决Clion中多个cpp文件运行时出现multiple definition of `main'
在最初使用Clion这款软件做C++开发时,有时会遇到在同一个Project中有多个cpp文件,而每个cpp文件又都有main函数,因此运行时会出现multiple definition of `main'这样的错误。
志颖
2019/03/17
4K0
在linux后台运行脚本的方法和命令
后台运行脚本 执行脚本test.sh:./test.sh 中断脚本test.sh:ctrl+c 在1的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z 执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台开始运行(“number”是使用jobs命令查到的 [ ]中的数字,不是pid) 直接在后台运行脚本test.sh:./test.sh & 查看当前shell环境中已启动的任务情况:jobs 将test.sh切换到前台运行:fg %number(”number”为使用jobs命令查看到的 [ ] 中的数字,不是pid) 中断后台运行的test.sh脚本:先fg %number切换到前台,再ctrl+c;或是直接kill %number 以上两种在后台运行test.sh的方法,当遇到退出当前shell终端时,后台运行的test.sh也就结束了。这是因为以上两种方法使得test.sh在后台运行时,运行test.sh进程的父进程是当前shell终端进程,关闭当前shell终端时,父进程退出,会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。所以要想退出当前shell终端时test.sh继续运行,则需要使用nohup忽略hangup信号。
大数据流动
2020/06/19
3.6K0
获取程序运行时间 - Linux Shell 脚本
下面的脚本可以获取一段程序的运行时间: #!/bin/bash start=$(date +%s) sleep 5; end=$(date +%s) take=$(( end - start )) echo Time taken to execute commands is ${take} seconds. 其中: date +%s获取当前的纪元时(Unix时间),即自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。 sleep 5使程序延时5秒钟。 take=$(( end - s
mwangblog
2019/06/03
17K0
[新手必看] 17个常见的Python运行时错误
对于刚入门的Pythoner在学习过程中运行代码是或多或少会遇到一些错误,刚开始可能看起来比较费劲。随着代码量的积累,熟能生巧当遇到一些运行时错误时能够很快的定位问题原题。下面整理了常见的17个错误,希望能够帮助到大家。
龙哥
2019/11/11
1.1K0
pycharm运行时报configuration错误「建议收藏」
错误原因是该项目未配置正确的python解释器。在file setting中找到解释器位置
全栈程序员站长
2022/09/26
1.4K0
pycharm运行时报configuration错误「建议收藏」
17个新手常见 Python 运行时错误
当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。 1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”) 该错误将发生在类似如下代码中: if spam == 42 print('Hello!') 2)使用 = 而不是 ==(导致“SyntaxError: invalid syntax
Crossin先生
2018/04/16
1.2K0
17个新手常见Python运行时错误
企鹅号小编
2017/12/28
1.4K0
17个新手常见Python运行时错误
17个新手常见Python运行时错误
当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。
bear_fish
2018/09/20
8390

相似问题

Python脚本在终端中正确运行时,通过crontab运行时会出现错误。

16

为什么在执行立即命令时会出现运行时错误?

12

Perl脚本在linux终端运行,但浏览器出现错误

31

Python脚本在作为ubuntu服务运行时会出现错误。

25

Python脚本在Jenkins运行时会出现语法错误

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文