我有一张表(请参阅图像)员工(经理是另一个人的经理等等),ID为id,parentid,薪水,totalsalary。最后一个需要更新,以便每个员工都有其子孙工资总和。我已经编写了脚本,它可以通过id获得总薪水,并且可以更新游标中的列,但是它很重要...还有其他方法吗?递归更新管理器表树
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