Je hebt niet helemaal de eigen UPDATE FROM
van SQL Server syntaxis omlaag. Weet ook niet waarom je mee moest doen op het CommonField
en er daarna ook op filteren. Probeer dit:
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';
Als je iets heel doms doet - zoals constant proberen de waarde van een kolom in te stellen op het totaal van een andere kolom (wat in strijd is met het principe om overbodige gegevens niet op te slaan), kun je een CTE (common table expression) gebruiken - zie hier en hier voor meer details:
;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];
De reden dat dit echt dwaas is, is dat je deze hele update elke keer opnieuw moet uitvoeren in een rij in table2
veranderingen. Een SUM
is iets dat u altijd tijdens runtime kunt berekenen en daarbij hoeft u zich nooit zorgen te maken dat het resultaat oud is.