Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego nie mogę użyć aliasu dla agregatu w klauzuli posiadającej?

HAVING klauzula jest oceniana przed SELECT - więc serwer jeszcze nie wie o tym aliasie.

  1. Najpierw iloczyn wszystkich tabel w FROM tworzona jest klauzula.

  2. WHERE klauzula jest następnie oceniana w celu wyeliminowania wierszy, które nie spełniają warunku_wyszukiwania.

  3. Następnie wiersze są grupowane przy użyciu kolumn w GROUP BY klauzula.

  4. Następnie grupy, które nie spełniają search_condition w HAVING klauzule są eliminowane.

  5. Następnie wyrażenia w SELECT Lista celów zestawień jest oceniana.

  6. Jeśli DISTINCT słowo kluczowe jest obecne w klauzuli select, zduplikowane wiersze są teraz eliminowane.

  7. UNION jest pobierany po ocenie każdego podwyboru.

  8. Na koniec wynikowe wiersze są sortowane według kolumn określonych w ORDER BY klauzula.

  9. TOP klauzula jest wykonywana.

Mam nadzieję, że to odpowiada na twoje pytanie. Wyjaśnia również, dlaczego alias działa w ORDER BY klauzula.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak oskryptować rolę bazy danych serwera SQL?

  2. DATEDIFF() Przykłady w SQL Server

  3. Jak sprawdzić, które kolumny nie zawierają żadnych danych (wszystkie wartości mają wartość NULL)?

  4. Jak zainstalować Azure Data Studio na komputerze Mac

  5. SQL Server IN a wydajność EXISTS