In which order does SQL Server process SQL statements

The main SQL/Select statement is:

SELECT DISTINCT TOP (list)
FROM (LeftTable)
(join type) JOIN (RightTable)
ON (condition])
WHERE (condition)
GROUP BY (list)
WITH (CUBE | ROLLUP)
HAVING (condition)
ORDER BY (list)

Evaluation order:

  1. FROM (LeftTable)
  2. ON (condition)
  3. (join type) JOIN (RightTable)
  4. WHERE (condition)
  5. GROUP BY (list)
  6. WITH (CUBE | ROLLUP)
  7. HAVING (condition)
  8. SELECT
  9. DISTINCT
  10. ORDER BY (list)
  11. TOP (list)
  • SQL first evaluate the FROM files.
  • Then the conditions of the FROMs.
  • Then how it will group/summaries...
  • Then finally the SELECT statement.

This means that everything has to be defined in the order of evaluation by SQL (ie: aliases, calculated fields...)