当前位置:首页 > 技术心得 > 正文内容

BOM各层级计算真实用量

xjtudll5年前 (2022-01-30)技术心得8340

SELECT * FROM (

select 级别='1',A='A1',B='B1',用量='1',B真实用量='' UNION ALL
select 级别='2',A='B1',B='C1',用量='2',B真实用量='' UNION ALL
select 级别='3',A='C1',B='D1',用量='3',B真实用量='' UNION ALL
select 级别='3',A='C1',B='D2',用量='2',B真实用量='' UNION ALL
select 级别='3',A='C1',B='D3',用量='2',B真实用量='' UNION ALL
select 级别='3',A='C1',B='D4',用量='5',B真实用量='' UNION ALL
select 级别='4',A='D1',B='E1',用量='9',B真实用量='' UNION ALL
select 级别='4',A='D2',B='E2',用量='5',B真实用量='' ) #t
例如:
这里有 A1-B1-C1-D1-E1 要结果 A1-B1-C1-D1-E1
1 2 3 9 1 2 6 54
例如:
这里有 A1-B1-C1-D2-E2 要结果 A1-B1-C1-D2-E2
1 2 2 5 1 2 4 20
当级别高的行字段B等于级别低的行字段A时,将两行用量相乘放入低级别B字段对应的B真实用量中,若在一条流程里级别多了需要滚动相乘,如例子(级别数字越小级别越高)
要的结果如下:
0.3266298645016294

参考代码:

WITH CTE

AS

(SELECT *,QTY AS NEW_QTY FROM #T A

WHERE NOT EXISTS (SELECT 1 FROM #T WHERE LEVEL<A.LEVEL AND B=A.A)

UNION ALL

SELECT A.*,B.NEW_QTY*A.QTY

FROM #T A

JOIN CTE B ON A.A=B.B

WHERE A.LEVEL>B.LEVEL)

SELECT * FROM CTE

ORDER BY LEVEL,A

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://www.xjtudll.cn/Exp/631/

标签: SQL
分享给朋友:

“BOM各层级计算真实用量” 的相关文章

Multisim运放输出超过电源电压解决

Multisim运放输出超过电源电压解决

在使用Multisim自带库里的运放的时候,例如LM324M,发现一个问题,运放的输出电压能达到几百V甚至几千V,而电源明显只有几V而已。输出电压超过电源电压,理论上是不可能的,实际上也是不可能的,那么肯定就是仿真有误了,其实根本原因是Multisim里面运放是三脚模型,根本没考虑电源。我们查看LM...

运放平衡电阻的作用

运放平衡电阻的作用

运放输入端所接电阻要平衡,目的是使集成运放两输入端的对地直流电阻相等,运放的偏置电流不会产生附加的失调电压。但有些电路对失调电压要求并不高,例如交流音频放大器。有些运放偏置电流很小,即使输入端电阻不平衡也不会对失调电压产生什么影响,这些电路就可以不要求输入端电阻平衡。 以反相放大器来说明平衡电阻的...

IOS textField怎样设置只能输入英文字母或者数字,不能输入汉字

参考资料: http://segmentfault.com/q/1010000002705645/a-1020000002708433 //设置键盘类型 self.textField.keyboardType = UIKeyboardTypeASCIICapable; define kAlph...

二进制逆序(字节反转)

  1  理论分析   二进制逆序,顾名思义就是将低位和高位交换,例如0x23 = 0010 0011 B,逆序后就是1100 0100 B。字节反转在“小端”格式和“大端”格式之间的数据转换是一个必要的操作。 一种比较...

手表防水扫盲

手表防水扫盲

手表防水的误区 很多人觉得奇怪,当要购买水中活动可以使用的手表时,为何推荐他们防水100m以上的手表。“我一辈子也没潜水超过50m”,其实,这样的疑问不只存在于一般购买手表的消费者身上,前几年多数的手表销售员与修表师傅也都不甚在意这个问题,直到最近运动表的市场受到重视,才开始注意防水标示的区别,但...

Protel 99SE PCB 与SCH 的比较

Protel 99SE PCB 与SCH 的比较

这个功能主要是比较原理图和PCB的不同,当然如果你的PCB是由原理图Update而来的话,自然两者就是相同的。 第一步:将SCH生成Netlist. (Design /Greate Netlist) 第二步:将PCB生成Netlist. PCB 生成Netlist 的步骤如下: ① 打开PCB文件...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。