2014-11-15 4 views
1

Объединение всей функции не работает внутри рекурсивного CTE ...?Рекурсивный CTE в SQL

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 

На самом деле я получаю результат:

Я извлекая значение до объединения всех function.I должны получить все значения из рекурсивной КТР.

+2

В чем ваш вопрос? Что вы имеете в виду: «Союз все не работает»? Что именно вы пытаетесь достичь? Покажите нам некоторые примеры данных и ожидаемый результат (отредактируйте свой вопрос, не публикуйте это в комментарии) –

ответ

0

Предложение on в вашем соединении - неправильный путь. Это должно быть b.id = a.man_id.

Вы уже выбрали всех менеджеров, у которых нет менеджера, а затем попытались найти своего менеджера. Когда я подозреваю, что вы хотите, это все их подчиненные.

Смежные вопросы