Bom中的实体物料与用量

       在制造业BOM中存在一种“虚拟件”作为供应类型的应用。该部分应用主要用于实际不用于实际出入库的物料,在BOM中为了体现结构或其它应用的需要而设置的一种供应类型。

如下图BOM

根据以上的情况,在实际生产订单或现场实体物料使用的BOM结构如下:

BOM的设计结构如下:

表结构为:

表名:

Bom

字段名称

字段属性

说明

P

Varchar(max)

父项

C

Varchar(max)

子项

Wt

Int

供应类型

Qty

int

用量

创建BOM

if OBJECT_ID('Bom') is not null

begin

    drop tableBom

end

create table Bom

(

p varchar(max),

c varchar(max),

wt int,

qty float

)

insert into bom(p,c,wt,qty)values('A','A1',4,2)

insert into bom(p,c,wt,qty)values('A','A2',4,3)

insert into bom(p,c,wt,qty)values('A','A3',3,1)

insert into bom(p,c,wt,qty)values('A1','A11',3,2)

insert into bom(p,c,wt,qty)values('A1','A12',3,3)

insert into bom(p,c,wt,qty)values('A1','A13',3,1)

insert into bom(p,c,wt,qty)values('A2','A21',4,2)

insert into bom(p,c,wt,qty)values('A2','A22',3,3)

insert into bom(p,c,wt,qty)values('A2','A23',3,1)

insert into bom(p,c,wt,qty)values('A21','A211',3,2)

insert into bom(p,c,wt,qty)values('A21','A212',3,4)

拟算角本

IF OBJECT_ID('TEMPDB..#BOM') IS NOT NULL

BEGIN

    DROP TABLE#BOM

END

SELECT P,C,wt,qty,0 AS L INTO #BOM FROM BOM WHERE 1=0 AND  P='A'

INSERT INTO #BOM SELECT P,C,WT,QTY ,1 AS L FROM BOM WHERE P='A'

DECLARE @ID INT

SELECT @ID=COUNT( DISTINCT WT) FROM #BOM WHERE L IN(SELECT MAX(L) AS L FROM #BOM ) AND wt=

WHILE @ID=1

BEGIN

  INSERT INTO #BOM SELECT DISTINCT A.p,B.c,B.wt,B.qty*A.qty AS QTY,A.L+1 AS L FROM #BOM A INNER JOIN Bom B ON A.c=B.p INNER JOIN (SELECT * FROM(SELECT ROW_NUMBER()OVER(PARTITION BY C,WT,L ORDER BY C,WT,L DESC) AS ID,P,C,WT,L,QTY FROM #BOM WHERE wt=4)X WHERE ID=1)A1 ON A1.C=A1.C AND A.L=A1.L AND A.wt=A1.wt WHERE A.L IN(SELECT MAX(L) FROM #BOM)

SELECT @ID=COUNT( DISTINCT WT) FROM #BOM WHERE L IN(SELECT MAX(L) AS L FROM #BOM ) AND wt=4

END

SELECT  * FROM #BOM WHERE WT=3 ORDER BY P,L

结果 


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值