(5) select (5-2) distinct (5-3) top (top_specification>) (5-1) select_list> (1) from (1-j) left_table> join_type> join right_table> on on_predicate> |(1-a) left_table> apply_type> apply right_table_expression> as alias> |(1-p) left_table> pivot (pivot_specification>) as alias> |(1-u) left_table> unpivot (unpivot_specification>) as alias> (2) where where_predicate> (3) group by group_by_specification> (4) having having_predicate> (6) order by order_by_list>