Uw oorspronkelijke update-instructie heeft GROUP BY en HAVING, die niet zijn toegestaan in de syntaxis van de UPDATE-instructie. Hier is een link naar een syntaxisdiagram:UPDATE (Transact-SQL) .
Uw tweede versie heeft de GROUP BY en HAVING als onderdeel van een afgeleide tabel, die is toegestaan.
Dus ja:je had een syntaxisfout.
Overigens ben ik het met @bluefeet eens:een CTE in plaats van een afgeleide tabel zou uw update beter leesbaar en begrijpelijker maken. Een klein ding, maar het kan een groot verschil maken in onderhoudsgemak.