私は標準的な上司/従業員テーブルを持っています。私は上司(IDで指定された)と彼のすべての従業員(およびその従属者など)を選択する必要があります。残念なことに、実際のデータにはいくつかのループがあります(たとえば、両方の会社の所有者がお互いを上司として設定しています)。 CTEを使った単純な再帰的クエリ(最大再帰レベルが100を超えた)。従業員を選択することはできますか?私は彼らが選ばれた順序ではなく、それぞれが一度選択されただけである。 データのループを含むSQL Server 2005の再帰クエリは可能ですか?
投稿日:私の質問が欲しいですか?うーんOK ...私、それはかなり明白ですが、しかし - ここにある:
with
UserTbl as -- Selects an employee and his subordinates.
(
select a.[User_ID], a.[Manager_ID] from [User] a WHERE [User_ID] = @UserID
union all
select a.[User_ID], a.[Manager_ID] from [User] a join UserTbl b on (a.[Manager_ID]=b.[User_ID])
)
select * from UserTbl
は2を追加しました:ああ、場合には、それは明確ではなかった - これは生産システムであります私は少しアップグレード(基本的に一種のレポートを追加する)をしなければならない。したがって、避けることができればデータを変更しないことをお勧めします。
/あなたの質問を投稿できますか? – Justin