再帰クエリに制限を設定したいと思います。しかし、再帰を制限した最後のエントリを失いたくありません。
現在、クエリは次のようになっています。
WITH MyCTE (EmployeeID, FirstName, LastName, ManagerID, level, SPECIAL)
AS (
SELECT a.EmployeeID, a.FirstName, a.LastName, a.ManagerID, 0 as Level
FROM MyEmployees as a
WHERE ManagerID IS NULL
UNION ALL
SELECT b.EmployeeID, b.FirstName, b.LastName, b.ManagerID, level + 1
FROM MyEmployees as b
INNER JOIN MyCTE ON b.ManagerID = MyCTE.EmployeeID
WHERE b.ManagerID IS NOT NULL and b.LastName != 'Welcker'
)
SELECT *
FROM MyCTE
OPTION (MAXRECURSION 25)
そして、それはマネージャーウェルカーによって制限され、結果は次のようになります。
EmployeeID; FirstName; LastName; ManagerID; level
1 Ken Sánchez NULL 0
私が欲しいのは、従業員「ウェルカー」を含めることです。問題は、リストに含める必要のある最後の人の名前しか持っていないことです。コマンド構造には以下のエントリがいくつかありますが、私はそれらを知りません。また、それらを見たくありません。
これは、クエリの結果がどのように見えるかを想像する例です。
EmployeeID FirstName LastName ManagerID level
1 Ken Sánchez NULL 0
273 Brian Welcker 1 1
どんな助けでも大歓迎です