рекурсивный CTE - ограниченные количества строк

Я пытаюсь создать запрос на очень простой таблице (организации)

У меня есть столбцы

Organisation, Manager, Superior_Organisation
CEO
Leadership Team, David, CEO 
Production Management, Alex, Leadership Team
Production Site 1, Francoise, Production Management
Production Site 2, Steve, Production Management
Production Site 1 Maintenance, Alan, Production Site 1

....

Из-за другого уровня я не знаю, как создать запрос, который поставляет мне все превосходящие организации, запускающиеся на одном определенном уровне

Я попробовал этот код

declare @i int
select @i = 0
-- keep going until no more rows added
while @@rowcount > 0
begin
select @i = @i + 1
-- Get all children of previous level
SELECT     organisations.Organisation, organisations.Manager,  
organisations.Superior_Organisation
FROM         organisations 
end

Но с этим запросом, я получаю все, и я не знаю, как я могу запросить только превосходящий orgs, например, для Места производства 1 Обслуживание. (может быть 1 или до 5),

Одним путем могло быть соединение на таблице, но я думаю, это далеко от того, чтобы быть производительным.

Я видел некоторые рекурсивные запросы CTE, но я не знаком. Поэтому цените справку.

1
задан Martin Smith 18 October 2010 в 13:56
поделиться