У меня есть таблица (см. Изображение) Сотрудники (менеджер - менеджер другого и т. Д.) С id, parentid, зарплата, totalsalary. Последнее необходимо обновить, чтобы каждый сотрудник имел сумму окладов своих потомков. Я уже написал скрипт, который получает общую зарплату по идентификатору и столбцу обновлений в курсоре, но он тяжелый ... любые другие способы?Обновление таблицы таблиц по рекурсии
DECLARE @id INT ;
DECLARE @s INT ;
DECLARE curs CURSOR FOR
SELECT personid FROM dbo.Employees
OPEN curs ;
FETCH NEXT FROM curs INTO @id ;
WHILE @@FETCH_STATUS = 0
BEGIN
WITH Xemps (ID)
AS (SELECT PersonID AS ID
FROM dbo.Employees
WHERE PersonID = @id
UNION ALL
SELECT e.PersonID AS ID
FROM dbo.Employees AS e
INNER JOIN Xemps AS x ON e.ManagerID = x.ID
)
SELECT @s = SUM(Salary)
FROM dbo.Employees
WHERE PersonID IN (SELECT id
FROM Xemps)
UPDATE dbo.Employees
SET SalarySum = @s
WHERE PersonID = @id
FETCH NEXT FROM curs INTO @id
END
CLOSE curs ;
DEALLOCATE curs ;
Прокомментируйте вашу версию SQL Server – njr101