Sua instrução de atualização original tem GROUP BY e HAVING, que não são permitidas na sintaxe da instrução UPDATE. Aqui está um link para um diagrama de sintaxe:UPDATE (Transact-SQL) .
Sua segunda versão tem GROUP BY e HAVING como parte de uma tabela derivada, que é permitido.
Então, sim:você teve um erro de sintaxe.
Aliás, concordo com @bluefeet:um CTE no lugar de uma tabela derivada tornaria sua atualização mais fácil de ler e entender. Uma coisa pequena, mas pode fazer uma grande diferença na facilidade de manutenção.