sql >> Base de Datos >  >> RDS >> Sqlserver

¿Por qué no puedo usar un alias para un agregado en una cláusula de tener?

El HAVING la cláusula se evalúa antes de SELECT - por lo que el servidor aún no conoce ese alias.

  1. Primero, el producto de todas las tablas en el FROM se forma la cláusula.

  2. El WHERE luego se evalúa la cláusula para eliminar las filas que no satisfacen la condición_búsqueda.

  3. A continuación, las filas se agrupan usando las columnas en el GROUP BY cláusula.

  4. Luego, los grupos que no satisfagan la search_condition en el HAVING cláusula se eliminan.

  5. A continuación, las expresiones en el SELECT se evalúa la lista de destino de declaraciones.

  6. Si el DISTINCT palabra clave presente en la cláusula de selección, ahora se eliminan las filas duplicadas.

  7. La UNION se toma después de evaluar cada subselección.

  8. Finalmente, las filas resultantes se ordenan de acuerdo con las columnas especificadas en el ORDER BY cláusula.

  9. TOP se ejecuta la cláusula.

Espero que esto responda a su pregunta. Además, explica por qué el alias funciona en ORDER BY cláusula.