Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Warum kann ich keinen Alias ​​für ein Aggregat in einer Having-Klausel verwenden?

Das HAVING -Klausel wird vor dem SELECT ausgewertet - der Server kennt diesen Alias ​​also noch nicht.

  1. Zuerst das Produkt aller Tabellen im FROM Klausel gebildet wird.

  2. Das WHERE -Klausel wird dann ausgewertet, um Zeilen zu eliminieren, die die Suchbedingung nicht erfüllen.

  3. Als nächstes werden die Zeilen unter Verwendung der Spalten in GROUP BY gruppiert Klausel.

  4. Dann Gruppen, die die search_condition nicht erfüllen im HAVING Klausel entfallen.

  5. Als nächstes die Ausdrücke in SELECT Anweisungszielliste ausgewertet.

  6. Wenn der DISTINCT Schlüsselwort in der select-Klausel vorhanden ist, werden doppelte Zeilen jetzt eliminiert.

  7. Die UNION wird genommen, nachdem jede Unterauswahl ausgewertet wurde.

  8. Abschließend werden die resultierenden Zeilen nach den in ORDER BY angegebenen Spalten sortiert Klausel.

  9. TOP Klausel ausgeführt wird.

Hoffe das beantwortet deine Frage. Außerdem wird erklärt, warum der Alias ​​in ORDER BY funktioniert Klausel.