ロールアップ入力に基づいて、同じテーブルに親アカウントとその子アカウントを返す t-sql クエリを作成しようとしています。誰か助けてくれませんか?
***TABLE:USERS***
UserId ParentId
66 -1
67 -1
68 -1
69 54
70 55
71 56
72 57
これは私がこれまでに持っているものですが、最後のアカウントである 1 つのアカウントのみを返します。再帰に ParentId を含める必要があるため、親アカウントと子アカウントのリストが次々に取得されます。
DECLARE @RollUp AS bit
DECLARE @ParentID As INT
SELECT @RollUp = 0
If @Rollup = 1 SELECT @ParentID = CASE WHEN ParentID = -1
THEN Users.USER_ID
Else ParentID END
FROM Users WHERE user_Id IN (70,71) ELSE
SELECT @ParentID = Users.USER_ID
FROM Users WHERE USER_Id IN (70,71) ;
WITH TRAVERSE_TREE_CTE AS
(
Select User_ID,ParentID
FROM Users
WHERE User_ID = @ParentID
UNION ALL Select Users.User_ID, Users.ParentID
FROM TRAVERSE_TREE_CTE INNER
JOIN Users
ON TRAVERSE_TREE_CTE.User_ID = Users.ParentID
)
Select * from Users
where User_id IN (SELECT distinct User_ID FROM TRAVERSE_TREE_CTE)