Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Por que não posso usar alias em uma coluna count(*) e referenciá-lo em uma cláusula de ter?


Consulte o documento referenciado pelo CodeByMoonlight em uma resposta à sua pergunta recente.

A cláusula HAVING é avaliada antes do SELECT - portanto, o servidor ainda não conhece esse alias.
  1. Primeiro, o produto de todas as tabelas no de cláusula é formada.
  2. O onde A cláusula é então avaliada para eliminar linhas que não satisfazem a search_condition.
  3. Em seguida, as linhas são agrupadas usando as colunas no agrupar por cláusula.
  4. Então, os Grupos que não atendem à condição de pesquisa na cláusula de ter são eliminados.
  5. Em seguida, as expressões na seleção lista de alvos de cláusulas são avaliadas.
  6. Se o distinto palavra-chave presente na cláusula select, linhas duplicadas agora são eliminadas.
  7. O sindicato é obtido após cada subseleção ser avaliada.
  8. Finalmente, as linhas resultantes são classificadas de acordo com as colunas especificadas na ordem por cláusula.