Как правильно заданный запрос, так как он использует T1 внутри предложения и T1 объявляется после завершения предложения внутри WITH.Как работает следующий SQL-запрос?
WITH T1(Emp,Manager,Salary) AS
(
SELECT tt2.[Emp],tt2.[Manager],tt2.[Salary]
FROM [YourTable] AS tt1
RIGHT OUTER JOIN [YourTable] AS tt2 ON tt1.[Emp]=tt2.[Manager]
WHERE tt1.[Emp] is NULL
UNION ALL
SELECT r.[Emp],T1.[Manager],r.[Salary]
FROM [YourTable] AS r
INNER JOIN T1 ON r.[Manager]=T1.[Emp]
)
SELECT [Manager],SUM([Salary]) AS Salary
FROM T1
GROUP BY [Manager]
ORDER BY SUM([Salary]) DESC
Выше запроса ответить на следующий вопрос -
У меня есть таблица со столбцами (Сотрудник, менеджер, зарплата). Необходимо рассчитать совокупную зарплату для всех сотрудников, соответствующих менеджерам верхнего уровня в одном SQL. Например
Input table is :
Emp Manager Salary
A T 10
B A 11
C F 13
D B 5
Результат должен быть:
Top-Lvl Manager Salary(agg)
T 26
F 13
Менеджер-Работник наслоение может пойти несколько уровней.
Я удалил несовместимые теги базы данных. Пожалуйста, пометьте базу данных, которую вы действительно используете. –
Этот запрос был создан с использованием CTE (выражение Comman Table Expression). Для получения дополнительной информации об этом, пожалуйста, перейдите по этой ссылке: https: //www.codeproject.com/Articles/275645/CTE-In-SQL-Server – LogicalDesk