Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Pourquoi ne puis-je pas utiliser un alias dans une colonne count(*) et le référencer dans une clause having ?

Voir le document référencé par CodeByMoonlight dans une réponse à votre question récente.

La clause HAVING est évaluée avant le SELECT - donc le serveur ne connaît pas encore cet alias.

  1. D'abord le produit de tous les tableaux dans le from clause est formée.
  2. Le La clause est ensuite évaluée pour éliminer les lignes qui ne satisfont pas à la condition de recherche.
  3. Ensuite, les lignes sont regroupées à l'aide des colonnes du group by clause.
  4. Ensuite, les groupes qui ne satisfont pas la condition de recherche dans la havingclause sont éliminés.
  5. Ensuite, les expressions dans la sélection la liste cible des clauses est évaluée.
  6. Si le distinct mot-clé présent dans la clause select, les lignes en double sont maintenant éliminées.
  7. Le syndicat est prise après l'évaluation de chaque sous-sélection.
  8. Enfin, les lignes résultantes sont triées selon les colonnes spécifiées dans le ordre par clause.