34,577
社区成员
发帖
与我相关
我的任务
分享
Create table aa (ID varchar(20),ItemCode varchar(20),BOMUsage varchar(20))
GO
insert into aa(ID,ItemCode,BOMUsage)
select 'S20011','13134313', '3' union all
select '215131', 'S20011', '3' union all
select 'Z10211', 'Z10211' , '3' union all
select 'Z10311', 'Z10211', '3' union all
select 'Z10411', 'Z10311' , '3' union all
select 'Z10051', '1313131', '3' union all
select 'Z10811', 'Z10051', '3' union all
select 'Z21011', 'Z15411' , '3' union all
select 'Z13211', '1313131' , '3' union all
select 'Z10431', 'Z11211', '3' union all
select 'Z14511', 'Z14511' , '3' union all
select 'Z15411', '1313131', '3' union all
select 'Z11211', '1313131', '3' union all
select 'S20011', '13134313' , '3' union all
select '215131', 'S2001' , '3' union all
select 'Z10211', '1313131' , '3' union all
select 'Z10311', 'S20011' , '3' union all
select 'Z10411', '1313131', '3' union all
select 'Z10051', '1313131' , '3' union all
select 'Z10811', '1313131', '3' union all
select 'Z21011', 'Z10811' , '3' union all
select 'Z13211', '1313131' , '3' union all
select 'Z14511', 'Z13211', '3' union all
select 'Z15411', 'Z10431', '3' union all
select 'Z11211', '1313131', '3'
GO
Create table bb (VerID varchar(20),BOMUsg varchar(20))
GO
insert into bb(VerID,BOMUsg)
select 'S20011','z' union all
select '215131','3' union all
select 'Z10211','z' union all
select 'Z10311','3' union all
select 'Z10411','3' union all
select 'Z10051','3' union all
select 'Z10811','3' union all
select 'Z21011','z' union all
select 'Z13211','3' union all
select 'Z10431','z' union all
select 'Z14511','3' union all
select 'Z15411','3' union all
select 'Z11211','z'
WITH cte AS
(
SELECT ID,ItemCode,BOMUsage,1 AS leve FROM
(
SELECT aa.ID,aa.ItemCode,aa.BOMUsage FROM aa
JOIN bb ON aa.ItemCode=bb.VerID AND aa.BOMUsage=bb.BOMUsg
)a
UNION ALL
SELECT b.ID,b.ItemCode,b.BOMUsage,cte.leve+1 AS leve
FROM
(
SELECT aa.ID,aa.ItemCode,aa.BOMUsage FROM aa
JOIN bb ON aa.ItemCode=bb.VerID AND aa.BOMUsage=bb.BOMUsg
)b JOIN cte ON b.ID=cte.ItemCode
)
SELECT * FROM cte
Z10411 Z10311 3 NULL NULL
Z10811 Z10051 3 NULL NULL
Z21011 Z15411 3 NULL NULL
Z14511 Z14511 3 NULL NULL
Z21011 Z10811 3 NULL NULL
Z14511 Z13211 3 NULL NULL
这是我要的一部分为3 最后拆到为空就不用拆了 要的就是这些数据 ,还有中间出现bb 表的BOMusg为z的数据SELECT b.*
FROM aa a LEFT JOIN bb b ON a.itemcode=b.verid
WHERE b.bomusg='z'
UNION
SELECT b.*
FROM aa a LEFT JOIN bb b ON a.itemcode=b.verid
WHERE b.bomusg IS NULL