Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Aggiorna con unisciti, raggruppa per e avendo

L'istruzione di aggiornamento originale contiene GROUP BY e HAVING, che non sono consentiti nella sintassi dell'istruzione UPDATE. Ecco un collegamento a un diagramma della sintassi:UPDATE (Transact-SQL) .

La tua seconda versione ha GROUP BY e HAVING come parte di una tabella derivata, che è permesso.

Quindi, sì:hai avuto un errore di sintassi.

Per inciso, sono d'accordo con @bluefeet:un CTE al posto di una tabella derivata renderebbe il tuo aggiornamento più facile da leggere e capire. Una piccola cosa, ma può fare una grande differenza in termini di facilità di manutenzione.