Order by
Order by는 집합의 정렬 방식을 제어하는 구문이다.
select * from northwind..orders order by customerID
기본은 asc (정순 낮은순서에서 높은순서)이며, desc를 붙여 반대의 순서로 구성할수도 있다.
select * from northwind..orders order by customerID desc
여러 컬럼 조합도 가능하다.
“주문일(OrderDate)가 최근이면서 같은 주문일일 경우 선적일을 기준으로 정렬한다.”
select * from northwind..orders order by OrderDate desc, ShippedDate
이 결과를 보면 Null 값이 포함된 정렬을 보게 되는데
정렬에서 null 은 가장 작은 값으로 취급된다.
이러한 결과를 원하지 않을경우 null 값을 다른값으로 바꾸어야 한다.
order by 절에는 표현식을 쓰는것이 가능하다.
select * from northwind..orders order by OrderDate desc, ISNULL(ShuppedDate, Getdate() +10)
무작위 정렬을 뽑아내는 법은 NewID() 함수를 사용하여 정렬하자
select * from northwind..orders order by NewID()
임의의 값을 정렬순서 상위에 놓고자 하는경우는 Isnull 함수를 사용하여 쿼리를 구성하면 된다.
“선적 국가(ShipCountry)를 ABC순으로 정렬하는데, 프랑스(France)는 정렬 우선순위를 두어 가장먼저 볼수 있게 해달라”
Order by 절 이하에 ShipCountry가 프랑스일경우 가장작은 값인 null 혹은 ” 와 같은 빈문자열을 반환하면 된다.
select * from northwind..orders order by ( case when ShipCountry = 'France' then null else ShipCountry end )
참고
상기의 내용은 손호성님의 “SQL Server 2005 완벽가이드 책”을 보며 필기한 내용입니다.
No Comments