Você não tem o
UPDATE FROM
proprietário do SQL Server sintaxe para baixo. Também não sei por que você precisava participar do CommonField
e também filtrá-lo depois. Tente isto: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';
Se você estiver fazendo algo realmente bobo - como tentar constantemente definir o valor de uma coluna para o agregado de outra coluna (o que viola o princípio de evitar armazenar dados redundantes), você pode usar um CTE (expressão de tabela comum) - veja aqui e aqui para mais detalhes:
;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];
A razão pela qual isso é realmente bobo é que você terá que executar novamente toda essa atualização toda vez que qualquer linha em
table2
mudanças. Uma SUM
é algo que você sempre pode calcular em tempo de execução e, ao fazê-lo, nunca precisa se preocupar que o resultado seja obsoleto.