Ihre ursprüngliche Update-Anweisung enthält GROUP BY und HAVING, die in der UPDATE-Anweisungssyntax nicht zulässig sind. Hier ist ein Link zu einem Syntaxdiagramm:UPDATE (Transact-SQL) .
Ihre zweite Version hat GROUP BY und HAVING als Teil einer abgeleiteten Tabelle, was ist erlaubt.
Also, ja:Sie hatten einen Syntaxfehler.
Übrigens stimme ich @bluefeet zu:Ein CTE anstelle einer abgeleiteten Tabelle würde Ihr Update leichter lesbar und verständlich machen. Eine Kleinigkeit, die jedoch einen großen Unterschied in der Wartungsfreundlichkeit ausmachen kann.