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

¿Por qué no puedo usar un alias en una columna de conteo (*) y hacer referencia a él en una cláusula de tener?

Consulte el documento al que hace referencia CodeByMoonlight en una respuesta a su pregunta reciente.

La cláusula HAVING se evalúa antes que SELECT, por lo que el servidor aún no conoce ese alias.

  1. Primero el producto de todas las tablas en el desde se forma la cláusula.
  2. El dónde 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 agrupar por cláusula.
  4. Luego, los grupos que no satisfacen la condición de búsqueda en la cláusula de tener son eliminados.
  5. A continuación, las expresiones en select se evalúa la lista de objetivos de la cláusula.
  6. Si el distinto palabra clave presente en la cláusula de selección, ahora se eliminan las filas duplicadas.
  7. El sindicato se toma después de evaluar cada subselección.
  8. Finalmente, las filas resultantes se ordenan según las columnas especificadas en el ordenar por cláusula.