SQL 사용자 Tip & 강좌
SQLER의 사용자들이 만들어가는 SQL서버 사용자 Tip & 강좌 게시판입니다. SQL서버 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.
글 수 1,443
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
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

