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

BOM各层级计算真实用量

xjtudll3年前 (2022-01-30)技术心得4120

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://xjtudll.cn/Exp/631/

标签: SQL
分享给朋友:

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

群晖Apache 忽略文件名大小写

群晖Apache 忽略文件名大小写

参考资料:https://www.cnblogs.com/shipment/p/14767848.html 1、SSH登录群晖ssh  admin@201.201.201.1682、修改conf文件权限为777sudo chmod 777 /volume1/@appstore/Apache...

金蝶K3:api说明打开只有网页的头,没有内容

金蝶K3:api说明打开只有网页的头,没有内容

问题描述 api说明打开只有网页的头,没有内容。问题的图片如下: 问题原因 检查api日志可以看到如下内容:数据库访问异常,请联系管理员... 解决方案 打开账套管理--点击异常账套--点击左上角的属性,检查配置的身份是不是SQL server身份认证,是不是没有填写sa的密码。...

NSTextfield只允许输入数字

.wiz-todo, .wiz-todo-img {width: 16px; height: 16px; cursor: default; padding: 0 10px 0 2px; vertical-align: -10%;-webkit-user-select: none;} .wiz-t...

世界城市时间及时区

时区是地球上的区域使用同一个时间定义。以前,人们通过观察太阳的位置(时角)决定时间,这就使得不同经度的地方的时间有所不同(地方时)。时区通过设立一个区域的标准时间部分地解决了这个问题。世界各个国家位于地球不同位置上,因此不同国家的日出、日落时间必定有所偏差。这些偏差就是所谓的时差。 1884年国际经...

3DMax9注册机激活:REQUEST CODE ERROR!

在安装3Dmax9的时候,使用了安装包自带的注册机,但是每次算序列号时,都提示REQUEST CODE ERROR!。换了几个版本的安装包,都是这个现象。 网上仔细搜索了一番,找到了原因。正确的破解步骤如下: 1、把3dmax 9注册机拷贝到3dmax 9的安装目录下(不要启动3dmax 9)...

ESD及静电的特点

什么是ESD ESD是代表英文Electrostatic Discharge[1] 即“静电放电”的意思。ESD是本世纪中期以来形成的以研究静电的产生与衰减、静电放电模型、静电放电效应如电流热(火花)效应(如静电引起的着火与爆炸)和电磁效应(如电磁干扰)等的学科。近年来随着科学技术的飞速发展、微电...

发表评论

访客

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