Вашият оригинален оператор за актуализиране има GROUP BY и HAVING, които не са разрешени в синтаксиса на оператора UPDATE. Ето връзка към синтактична диаграма:АКТУАЛИЗАЦИЯ (Transact-SQL) .
Втората ви версия има GROUP BY и HAVING като част от извлечена таблица, която е позволен.
Така че, да:имахте синтактична грешка.
Между другото, съгласен съм с @bluefeet:CTE вместо производна таблица ще направи вашата актуализация по-лесна за четене и разбиране. Малко нещо, но може да направи голяма разлика в лесната поддръжка.