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

Perché non posso usare un alias per un aggregato in una clausola have?

Il HAVING La clausola viene valutata prima di SELECT - quindi il server non conosce ancora quell'alias.

  1. Innanzitutto, il prodotto di tutte le tabelle nel FROM si forma la clausola.

  2. Il WHERE La clausola viene quindi valutata per eliminare le righe che non soddisfano la condizione_ricerca.

  3. Successivamente, le righe vengono raggruppate utilizzando le colonne in GROUP BY clausola.

  4. Quindi, i gruppi che non soddisfano la search_condition nel HAVING clausole sono eliminate.

  5. Successivamente, le espressioni in SELECT vengono valutati gli elenchi di obiettivi dell'istruzione.

  6. Se il DISTINCT parola chiave presente nella clausola select, le righe duplicate sono ora eliminate.

  7. Il UNION viene presa dopo che ogni sottoselezione è stata valutata.

  8. Infine, le righe risultanti vengono ordinate in base alle colonne specificate in ORDER BY clausola.

  9. TOP la clausola viene eseguita.

Spero che questo risponda alla tua domanda. Inoltre, spiega perché l'alias funziona in ORDER BY clausola.