drop table tblx
go

create table tblx
(a int
,b int
)
go

insert into tblx values (1,1)
insert into tblx values (1,1)
insert into tblx values (1,1)
insert into tblx values (1,1)
insert into tblx values (3,1)
insert into tblx values (3,1)
insert into tblx values (3,2)
insert into tblx values (3,2)
insert into tblx values (3,2)
insert into tblx values (6,1)
insert into tblx values (6,1)
insert into tblx values (6,2)
go

select distinct a.a as x, a.b as y
from tblx a
order by a.x


위 쿼리문은 2000 에서는 에러가 없습니다. order by 절에 alias 를 붙이는 이슈와 같습니다.
그런데 2008 에서는 다음과 같은 에러가 납니다.

메시지 207, 수준 16, 상태 1, 줄 3
열 이름 "x"이(가) 잘못되었습니다.
메시지 145, 수준 15, 상태 1, 줄 1
SELECT DISTINCT가 지정된 경우에는 ORDER BY 항목이 SELECT 목록에 나타나야 합니다.

쿼리가 복잡하고, 중복 컬럼도 있고 빠른 변환을 원하시면 번호로 order by 하시길 바랍니다.

select distinct a.a as x, a.b as y
from tblx a
order by x

select distinct a.a as x, a.b as y
from tblx a
order by a.a

select distinct a.a as x, a.b as y
from tblx a
order by 1