sql >> Database >  >> RDS >> Sqlserver

Waarom kan ik geen alias gebruiken in een count(*)-kolom en ernaar verwijzen in een hebbende clausule?

Zie het document waarnaar wordt verwezen door CodeByMoonlight in een antwoord op uw recente vraag.

De HAVING-component wordt geëvalueerd vóór de SELECT - dus de server kent die alias nog niet.

  1. Eerst het product van alle tabellen in de van clausule wordt gevormd.
  2. De waar clausule wordt vervolgens geëvalueerd om rijen te elimineren die niet aan de zoekvoorwaarde voldoen.
  3. Vervolgens worden de rijen gegroepeerd met behulp van de kolommen in de groeperen op clausule.
  4. Vervolgens Groepen die niet voldoen aan de zoekvoorwaarde in de hebbende clausule worden geëlimineerd.
  5. Vervolgens, de uitdrukkingen in de select clausule doellijst wordt geëvalueerd.
  6. Als de verschillende trefwoord aanwezig in de select-clausule, dubbele rijen zijn nu geëlimineerd.
  7. De unie wordt genomen nadat elke subselectie is geëvalueerd.
  8. Ten slotte worden de resulterende rijen gesorteerd volgens de kolommen die zijn opgegeven in de volgorde van clausule.


  1. TreeView-besturingselement met subformulieren

  2. Oplossing:"SQLServerAgent is momenteel niet actief ..."

  3. Hoe te repareren "Procedure verwacht parameter '@statement' van het type 'ntext/nchar/nvarchar'." Fout in SQL Server

  4. Oracle JDBC :ongeldige gebruikersnaam/wachtwoord (ora-01017)