以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  sql的cte递归查询如何标记叶级  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=127419)

--  作者:happyft
--  发布时间:2018/11/13 18:41:00
--  sql的cte递归查询如何标记叶级
--用CTE更新递归各级子件
WITH CTE
AS (
SELECT 产品编码, 父件编码, 0 AS Levle FROM BOM  WHERE 父件编码 IS NULL
    UNION ALL
    SELECT BOM.产品编码, BOM.父件编码, c.Levle + 1 AS Levle FROM CTE AS c
        INNER JOIN BOM ON c.产品编码 = BOM.父件编码
    WHERE Levle < 10 --限制最多10层
   )
   SELECT * FROM CTE 

这样查询 如果是最后一级的要想标记出来,在上述的递归中要在哪里加上什么才能标记出来呢?

谢谢!

--  作者:有点蓝
--  发布时间:2018/11/13 20:16:00
--  
无法标记
--  作者:HappyFt
--  发布时间:2018/11/14 10:26:00
--  
谢谢! 我目前是在最后再增加一个查询来实现
 SELECT * FROM CTE WHERE EXISTS(SELECT * from bom WHERE bom.父件编码 = cte.产品编码)

我还以为直接在递归有便捷的方法实现.