• Yay! Another point. Found this one quite easy - but only because I happened to re-read Itzik Ben-Gan's Inside Microsoft SQL Server 2008: T-SQL Querying recently. (Chapter 1)

    Itzik describes the logical order of processing as:

    FROM

    Cartesian Product

    ON clause filter

    Add Outer Rows

    WHERE

    GROUP BY

    HAVING

    SELECT

    Evaluate expressions

    DISTINCT

    TOP

    Presentation ORDER BY

    I would just add that the physical order of operations performed may differ from the logical order due to query optimisation.

    Well done Tom.

    edit: added further details after re-reading the question explanation