Votre instruction de mise à jour d'origine contient GROUP BY et HAVING, qui ne sont pas autorisés dans la syntaxe de l'instruction UPDATE. Voici un lien vers un diagramme de syntaxe :UPDATE (Transact-SQL) .
Votre deuxième version a le GROUP BY et HAVING dans le cadre d'une table dérivée, qui est autorisé.
Donc, oui :vous avez eu une erreur de syntaxe.
Incidemment, je suis d'accord avec @bluefeet :un CTE à la place d'un tableau dérivé rendrait votre mise à jour plus facile à lire et à comprendre. Une petite chose, mais cela peut faire une grande différence dans la facilité d'entretien.