Below script can be use with recursive CTE to get user hierarchy in SQL Server..
DECLARE @userType INT = 3
DECLARE @emp AS TABLE (Id INT, FName VARCHAR(100),LName VARCHAR(100), ReportTo INT)
INSERT INTO @emp (Id, FName, LName, ReportTo) VALUES
(1, 'Tom','Joe', 5)
,(2, 'Peter','Pep', 4)
,(3, 'Sem','Leo', 4)
,(4, 'Neeraj','Gusain', 0)
,(5, 'Mark','Pettit', 3)
,(6, 'Sara','Thomas', 2)
,(7, 'Jobb','Mular', 2)
,(8, 'Mark','Rekhei', 5)
,(9, 'Sara','Leon', 3)
,(10, 'Peter','James', 8)
;WITH CTE
AS
(
SELECT id, FName, LName, ReportTo, 0 as [level]
FROM @emp
WHERE (ReportTo = 0 AND @userType = 0) OR id = @userType
UNION ALL
SELECT e.id, e.FName, e.LName, e.ReportTo, (ct.[level] + 1) AS [level]
FROM @emp e
JOIN CTE ct ON ct.id = e.ReportTo
WHERE e.ReportTo <> 0
)
SELECT * FROM CTE
ORDER BY id
No comments:
Post a Comment