El HAVING la cláusula se evalúa antes de SELECT - por lo que el servidor aún no conoce ese alias.
-
Primero, el producto de todas las tablas en el
FROMse forma la cláusula. -
El
WHEREluego se evalúa la cláusula para eliminar las filas que no satisfacen la condición_búsqueda. -
A continuación, las filas se agrupan usando las columnas en el
GROUP BYcláusula. -
Luego, los grupos que no satisfagan la
search_conditionen elHAVINGcláusula se eliminan. -
A continuación, las expresiones en el
SELECTse evalúa la lista de destino de declaraciones. -
Si el
DISTINCTpalabra clave presente en la cláusula de selección, ahora se eliminan las filas duplicadas. -
La
UNIONse toma después de evaluar cada subselección. -
Finalmente, las filas resultantes se ordenan de acuerdo con las columnas especificadas en el
ORDER BYcláusula. -
TOPse ejecuta la cláusula.
Espero que esto responda a su pregunta. Además, explica por qué el alias funciona en ORDER BY cláusula.