ROW_NUMBER(Transact-SQL)

업데이트: 2006년 7월 17일

결과 집합 파티션 내의 행 일련 번호를 반환합니다. 각 파티션의 첫 번째 행은 1로 시작합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

ROW_NUMBER ( )     OVER ( [ <partition_by_clause> ] <order_by_clause> )

인수

  • <partition_by_clause>
    FROM 절이 생성한 결과 집합을 ROW_NUMBER 함수가 적용되는 파티션으로 나눕니다. PARTITION BY 구문은 OVER 절(Transact-SQL)을 참조하십시오.
  • <order_by_clause>
    파티션에서 ROW_NUMBER 값이 행에 할당되는 순서를 결정합니다. 자세한 내용은 ORDER BY 절(Transact-SQL)를 참조하십시오. 순위 함수에 <order_by_clause>가 사용된 경우 정수는 열을 나타낼 수 없습니다.

반환 유형

bigint

주의

ORDER BY 절은 지정된 파티션 내에서 행에 고유 ROW_NUMBER가 할당되는 순서를 결정합니다.

[!참고] OVER 절의 ORDER BYROW_NUMBER를 정렬합니다. 'Row Number'가 아닌 열 기준으로 정렬하는 SELECT 문에 ORDER BY 절을 추가하면 결과 집합은 외부 ORDER BY를 기준으로 정렬됩니다.

다음 예에서는 연간 판매 실적에 따라 AdventureWorks의 영업 사원에 대한 ROW_NUMBER를 반환합니다.

USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName
    ,ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row Number'
    ,s.SalesYTD, a.PostalCode
FROM Sales.SalesPerson s 
    INNER JOIN Person.Contact c 
        ON s.SalesPersonID = c.ContactID
    INNER JOIN Person.Address a 
        ON a.AddressID = c.ContactID
WHERE TerritoryID IS NOT NULL 
    AND SalesYTD <> 0;

다음 예에서는 행 번호 50부터 60까지의 행을 OrderDate순으로 반환합니다.

USE AdventureWorks;
GO
WITH OrderedOrders AS
(
    SELECT SalesOrderID, OrderDate,
    ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
    FROM Sales.SalesOrderHeader 
) 
SELECT * 
FROM OrderedOrders 
WHERE RowNumber BETWEEN 50 AND 60;

다음 예에서는 PARTITION BY 인수를 사용하는 방법을 보여 줍니다.

USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName
    ,ROW_NUMBER() OVER 
    (PARTITION BY PostalCode ORDER BY SalesYTD DESC) AS 'Row Number'
    ,s.SalesYTD, a.PostalCode
FROM Sales.SalesPerson s 
    INNER JOIN Person.Contact c 
        ON s.SalesPersonID = c.ContactID
    INNER JOIN Person.Address a 
        ON a.AddressID = c.ContactID
WHERE TerritoryID IS NOT NULL 
    AND SalesYTD <> 0;

변경 내역

릴리스 내역

2006년 7월 17일

새로운 내용
  • PARTITION BY 인수에 대한 예를 추가했습니다.

참고 항목

참조

RANK(Transact-SQL)
DENSE_RANK(Transact-SQL)
NTILE(Transact-SQL)
순위 함수(Transact-SQL)
함수(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기