Если это должен быть CTE, этот должен работать (запрос основан на базе данных AdventureWorks).Выберите заполнение CTE рекурсивно, строит список всех менеджеров выше указанного EmployeeID.Окончательный выбор подсчитывает все вхождения указанного EmployeeID в столбце AllManager.
WITH EmployeeList (EmployeeID, ManagerID, Level, AllManagers) AS
(
SELECT
EmployeeID,
ManagerID,
0 AS Level,
CAST(',' + CAST(EmployeeID AS varchar) + ',' AS varchar) AS AllManagers
FROM HumanResources.Employee
WHERE ManagerID IS NULL
UNION ALL
SELECT
HumanResources.Employee.EmployeeID,
HumanResources.Employee.ManagerID,
EmployeeList.level + 1 AS level,
CAST(AllManagers + CAST(HumanResources.Employee.EmployeeID AS varchar) + ',' AS varchar) AS AllManagers
FROM HumanResources.Employee inner join EmployeeList ON HumanResources.Employee.ManagerID = EmployeeList.employeeID
)
SELECT
EmployeeID,
ManagerID,
Level,
AllManagers,
--have to subtract 1 because AllManagers path includes employee own ID
(SELECT COUNT(*) FROM EmployeeList T1 WHERE T1.allmanagers LIKE '%,' + CAST(EmployeeList.employeeid AS varchar) + ',%') - 1 AS Subordinates
FROM EmployeeList
ORDER BY Level