SQL中的递归CTE

时间:2014-11-15 14:46:57

标签: sql sql-server common-table-expression recursive-query

Union all函数在Recursive CTE中不起作用......?

with CTE_Manager(id,manager,man_id,[Level])
as
(
    select id,manager,man_id,1
    from manager
    where man_id is null

union all

    select a.id,a.manager,a.man_id,b.[Level]+1
    from manager a
    join CTE_Manager b
    on b.man_id= a.id
)
select a.manager,ISNULL(a.manager,'SUPER BOSS'),b.Level
from CTE_Manager a
join CTE_Manager b
on a.man_id=b.id

其实我得到了输出:

我正在检索union all函数之前的值。我必须从递归CTE中获取所有值。

1 个答案:

答案 0 :(得分:0)

你的联接中的on子句是错误的。它应该是b.id = a.man_id。

您所做的是选择所有没有经理的经理,然后尝试找到他们的经理。当我怀疑你想要的是他们所有的下属。