Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо не мога да използвам псевдоним за агрегат в клауза за наличие?

HAVING клаузата се оценява преди SELECT - така че сървърът все още не знае за този псевдоним.

  1. Първо, произведението на всички таблици в FROM се формира клауза.

  2. WHERE след това се оценява, за да се елиминират редове, които не отговарят на условието за_търсене.

  3. След това редовете се групират с помощта на колоните в GROUP BY клауза.

  4. След това, групи, които не отговарят на search_condition в HAVING клауза се премахват.

  5. След това изразите в SELECT списъкът с целеви изявления се оценява.

  6. Ако DISTINCT ключовата дума присъства в клаузата за избор, дублиращите се редове вече са елиминирани.

  7. UNION се взема след оценка на всеки подизбор.

  8. Накрая, получените редове се сортират според колоните, посочени в ORDER BY клауза.

  9. TOP клаузата се изпълнява.

Надяваме се, че това отговаря на въпроса ви. Освен това обяснява защо псевдонимът работи в ORDER BY клауза.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL заявка, която получава всички пощенски кодове (адреси) в радиус от 20 мили от даден пощенски код

  2. Защо параметризирана заявка произвежда значително по-бавен план за заявка в сравнение с непараметризирана заявка

  3. Какъв е неутралния формат на дата за културата за SQL Server

  4. Възможно ли е клаузата за изход на SQL да върне колона, която не е вмъкната?

  5. Как да посочите съпоставянето в заявка в SQL Server (T-SQL)