递归问题解决方法,求大神帮帮忙!!
[解决办法]
用CTE支持递归查询。下面的语句是对B表的递归,你可以根据你的需要改造一下。
WITH cc AS(
SELECT
t1.VerID, t1.BOMUsg
FROM dbo.bb t1
WHERE t1.BOMUsg = 'z'
UNION ALL
SELECT
t2.VerID, t2.BOMUsg
FROM cc AS t1 INNER JOIN dbo.bb AS t2 ON t1.VerID = t2.VerID
WHERE t2.BOMUsg = '3'
)
SELECT
*
FROM CC;
[解决办法]
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