Share via


ORDER BY로 행 정렬

ORDER BY 절은 하나 이상의 열을 기준으로 최대 8,060바이트까지 쿼리 결과를 정렬합니다. 최대 ORDER BY 절 크기에 대한 자세한 내용은 ORDER BY 절(Transact-SQL)을 참조하십시오.

Microsoft SQL Server 2005에서는 SELECT 목록에 지정되지 않은 FROM 절의 테이블에서 순서 열을 지정할 수 있습니다. ORDER BY 절에서 참조하는 열 이름은 정확하게 SELECT 목록의 열이나 FROM 절의 테이블 열과 같아야 합니다. SELECT 목록에 열 이름이 별칭으로 지정되어 있을 경우 ORDER BY 절에서 별칭 이름만 사용할 수 있습니다. 마찬가지로 FROM 절에 테이블 이름이 별칭으로 지정되어 있을 경우에도 ORDER BY 절에서 별칭 이름만 사용하여 열을 정규화할 수 있습니다.

정렬에는 오름차순(ASC)과 내림차순(DESC)이 있습니다. 값을 지정하지 않으면 ASC가 사용됩니다.

다음 쿼리는 ProductID를 오름차순으로 정렬하여 결과를 반환합니다.

USE AdventureWorks;
GO
SELECT ProductID, ProductLine, ProductModelID
FROM Production.Product
ORDER BY ProductID

ORDER BY 절에 하나 이상의 열을 지정하면 정렬이 중첩됩니다. 다음 문은 Production.Product 테이블의 행을 제품 하위 범주를 기준으로 내림차순으로 정렬한 다음 각 제품 하위 범주 내에서 ListPrice를 기준으로 오름차순으로 정렬합니다.

USE AdventureWorks;
GO
SELECT ProductID, ProductSubcategoryID, ListPrice
FROM Production.Product
ORDER BY ProductSubcategoryID DESC, ListPrice

ORDER BY 절의 정확한 결과는 정렬하는 열의 데이터 정렬에 따라 달라집니다. 자세한 내용은 데이터 정렬 작업을 참조하십시오. char, varchar, ncharnvarchar 열의 경우 테이블이나 뷰에 정의된 열의 데이터 정렬과 다른 데이터 정렬에 따라 ORDER BY 연산을 수행하도록 지정할 수 있습니다. Windows 데이터 정렬 이름이나 SQL 데이터 정렬 이름을 지정할 수 있습니다. 예를 들어 AdventureWorks 데이터베이스에서 Person.Contact 테이블의 LastName 열은 Latin1_General 데이터 정렬로 정의되었지만 아래 스크립트에서는 Traditional_Spanish 데이터 정렬을 사용하여 오름차순으로 열이 반환됩니다.

USE AdventureWorks;
GO
SELECT LastName FROM Person.Contact
ORDER BY LastName
COLLATE Traditional_Spanish_ci_ai ASC
GO

데이터 형식이 text, ntext, image 또는 xml 인 열에는 ORDER BY를 사용할 수 없습니다. 또한 ORDER BY 목록에는 하위 쿼리, 집계 및 상수 식이 허용되지 않습니다. 그러나 SELECT 목록에서는 집계 또는 식에 사용자 지정 이름을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

SELECT Color, AVG (ListPrice) AS 'average list price'
FROM Production.Product
GROUP BY Color
ORDER BY 'average list price'

ORDER BY를 사용하면 쿼리의 가장 바깥쪽 SELECT 문에 대해서만 결과가 정렬됩니다. 예를 들어 다음 뷰 정의를 살펴보십시오.

CREATE VIEW TopView AS 
SELECT TOP 50 PERCENT * FROM Person.Contact       
ORDER BY LastName       

그런 다음 뷰를 쿼리합니다.

SELECT * FROM TopView       

뷰 정의에 ORDER BY 절이 포함되었지만 이 ORDER BY 절은 TOP 절이 반환하는 행을 결정하는 데만 사용됩니다. 뷰 자체를 쿼리할 경우 다음 쿼리에서와 같이 명시적으로 지정하지 않으면 SQL Server에서 결과가 정렬되지 않을 수도 있습니다.

SELECT * FROM TopView       
ORDER BY LastName       

참고 항목

개념

쿼리 기본 사항

도움말 및 정보

SQL Server 2005 지원 받기