PLM BOM展开 SQL 递归查询原创
金蝶云社区-云社区用户E11u1291
云社区用户E11u1291
16人赞赏了该文章 1,377次浏览 未经作者许可,禁止转载编辑于2022年07月17日 21:56:43
-- 参考论坛 imY 的ERPBOM 展开:https://vip.kingdee.com/article/213984429721406208?productLineId=1
--制作PLM BOM展开,研究了一天,数据与前台比对了下,结构顺序一致.
--警告,本人初学sql,别直接拿去就用,需要自行验证数据的正确性!
declare @wlbm nvarchar(50);
declare @fwlid nvarchar(50);
set @wlbm='pbom-3B002JGA034';--用自己数据的物料替换,这里查的是PBOM
set @fwlid=(select FMASTERID from T_PLM_PDM_BASE where fcode=@wlbm );
with CTE as
(
select 
cast(100000+FREPLACEGROUPSEQ as varchar(50)) sn,
cast(1 as varchar(50)) 层级,
cast(FREPLACEGROUPSEQ as varchar(10)) 项次,
BOMNUMBER,cast(bomnumber as varchar(50)) 上级数量,cast(bomnumber as varchar(50)) 总数量,
cast(FSLAVERELATION as varchar(50)) as 物料id,cast( @fwlid as varchar(50)) as 父物料id,
FSUBBOM
from T_PLM_CFG_RELATION 
where FID=@fwlid
 union all
 select 
cast(concat((p.sn),'.',100000+t.FREPLACEGROUPSEQ) as varchar(50)) sn,
cast(层级+1 as varchar(50)) 层级,
 cast(t.FREPLACEGROUPSEQ as varchar(10)) 项次, 
 t.BOMNUMBER,cast(p.BOMNUMBER as varchar(50)) 上级数量,cast(t.BOMNUMBER*p.BOMNUMBER as varchar(50)) 上级数量,
 cast(t.FSLAVERELATION as varchar(50)) 物料id, cast(p.物料id as varchar(50)) 父物料id,
 t.fsubbom
 from CTE P
 INNER JOIN T_PLM_CFG_RELATION T ON P.fsubbom=T.FID
)

select 
--m2.fcode,m.FCODE 物料code,m1.FCODE 父物料code, --这里和下面的left join注释掉了,取消注释的话就能看到物料编码了
fsubbom,t.父物料id,t.物料id,
项次,层级, sn,BOMNUMBER ,上级数量,总数量
 from cte T
--LEFT JOIN T_PLM_PDM_BASE M ON M.FID=T.物料id
--LEFT JOIN T_PLM_PDM_BASE M1 ON M1.FID=T.父物料id
--left join T_PLM_PDM_BASE m2 on m2.fid=t.FSUBBOM
order by t.sn



图标赞 16
16人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!