Nie masz własności UPDATE FROM
SQL Servera składnia w dół. Nie jestem też pewien, dlaczego musiałeś dołączyć do CommonField
a także filtrować go później. Spróbuj tego:
UPDATE t1
SET t1.CalculatedColumn = t2.[Calculated Column]
FROM dbo.Table1 AS t1
INNER JOIN dbo.Table2 AS t2
ON t1.CommonField = t2.[Common Field]
WHERE t1.BatchNo = '110';
Jeśli robisz coś naprawdę głupiego - jak ciągłe próbowanie ustawienia wartości jednej kolumny na agregację innej kolumny (co narusza zasadę unikania przechowywania zbędnych danych), możesz użyć CTE (wspólne wyrażenie tabelowe) - zobacz tutaj i tutaj po więcej szczegółów:
;WITH t2 AS
(
SELECT [key], CalculatedColumn = SUM(some_column)
FROM dbo.table2
GROUP BY [key]
)
UPDATE t1
SET t1.CalculatedColumn = t2.CalculatedColumn
FROM dbo.table1 AS t1
INNER JOIN t2
ON t1.[key] = t2.[key];
Powodem, dla którego jest to naprawdę głupie, jest to, że będziesz musiał ponownie uruchomić całą aktualizację za każdym razem, gdy dowolny wiersz w table2
zmiany. SUM
to coś, co zawsze możesz obliczyć w czasie wykonywania i dzięki temu nigdy nie musisz się martwić, że wynik jest nieaktualny.