PLM BOM展开 SQL 递归查询原创
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人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读