非常に単純なテーブル (組織) に対してクエリを作成しようとしています。
私は列を持っています
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
しかし、このクエリではすべてを取得できますが、本番サイト 1 の保守などの上位組織のみをクエリする方法がわかりません。(1 個または最大 5 個)
1つの方法はテーブルへの結合かもしれませんが、それはパフォーマンスにはほど遠いと思います.
再帰的な CTE クエリをいくつか見たことがありますが、詳しくはありません。助けてくれてありがとう。