Обновить запрос с помощью совокупного самостоятельного объединения - PullRequest
1 голос
/ 17 мая 2011

Я использую самообъединение, чтобы получить итоги за год.Это работает:

SELECT tc.EmployeeID, tc.TimeCardNum, tc.Tax, SUM(inr.Tax) AS YTDTax
FROM TimeCards tc
JOIN (
        SELECT EmployeeID, TimeCardNum, Tax
        FROM TimeCards  
) AS inr
ON inr.EmployeeID = tc.EmployeeID
AND inr.TimeCardNum <= tc.TimeCardNum
GROUP BY tc.EmployeeID, tc.TimeCardNum, tc.Tax
ORDER BY tc.EmployeeID, tc.TimeCardNum

, что дает мне столбец промежуточного итога, который сбрасывается для каждого сотрудника.

Теперь я хочу превратить его в запрос UPDATE, чтобы поместить эти данные в новыйколонка.Как это сделать?

1 Ответ

2 голосов
/ 17 мая 2011

Вы пробовали:

UPDATE a
SET a.YTDTax=b.YTDTax
FROM TimeCards a
INNER JOIN (
    SELECT tc.EmployeeID, tc.TimeCardNum, tc.Tax, SUM(inr.Tax) AS YTDTax
    FROM TimeCards tc
    JOIN (
            SELECT EmployeeID, TimeCardNum, Tax
            FROM TimeCards  
    ) AS inr
    ON inr.EmployeeID = tc.EmployeeID
    AND inr.TimeCardNum <= tc.TimeCardNum
    GROUP BY tc.EmployeeID, tc.TimeCardNum, tc.Tax
) b on a.EmployeeID=b.EmployeeID
AND a.TimeCardNum = b.TimeCardNum

Запустите транзакцию, чтобы убедиться, что она производит желаемый результат.

...