- 2017 년 9 월 11 일
- 읽는 데 5 분
-
- j
- c
- M
- m
- M
-
+8
적용 대상 : SQL Server (지원되는 모든 버전) Azure SQL 데이터베이스 Azure SQL 관리 형 인스턴스 Azure Synapse Analytics 병렬 데이터웨어 하우스
결과 집합의 출력에 번호를 매 깁니다. 보다 구체적으로, 각 파티션의 첫 번째 행에 대해 1부터 시작하여 결과 집합의 파티션 내 행의 순차 번호를 반환합니다.
참고
ROW_NUMBER
는 쿼리가 실행될 때 계산되는 임시 값입니다. 테이블에 숫자를 유지하려면 IDENTITY 속성 및 SEQUENCE를 참조하세요.
Transact-SQL 구문 규칙
구문
참고
SQL Server 2014 및 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하십시오.
인수
PARTITION BY value_expression
FROM 절에 의해 생성 된 결과 집합을 ROW_NUMBER 함수가 적용되는 파티션으로 나눕니다. value_expression은 결과 집합이 분할되는 열을 지정합니다. PARTITION BY
가 지정되지 않은 경우 함수는 쿼리 결과 집합의 모든 행을 단일 그룹으로 처리합니다. 자세한 내용은 OVER 절 (Transact-SQL)을 참조하십시오.
order_by_clause
ORDER BY
절은 행에 고유 한 ROW_NUMBER
지정된 파티션 내. 필수입니다. 자세한 내용은 OVER 절 (Transact-SQL)을 참조하십시오.
반환 유형
bigint
일반 사항
보장 없음 ROW_NUMBER()
를 사용하는 쿼리에서 반환 된 행은 다음 조건이 충족되지 않는 한 각 실행에서 정확히 동일하게 정렬됩니다.
-
값 분할 된 열의 값은 고유합니다.
-
ORDER BY
열의 값은 고유합니다. -
파티션 열과
ORDER BY
열의 값 조합은 고유합니다.
ROW_NUMBER()
는 비 결정적입니다. 자세한 내용은 결정적 및 비 결정적 함수를 참조하십시오.
예
A. 간단한 예
다음 쿼리는 4 개의 시스템 테이블을 알파벳 순서로 반환합니다.
결과 집합은 다음과 같습니다.
이름 | recovery_model_desc |
---|---|
마스터 | 단순 |
모델 | FULL |
msdb | 단순 |
tempdb | SIMPLE |
각 항목 앞에 행 번호 열을 추가하려면 행에 ROW_NUMBER
함수가있는 열을 추가합니다 (이 경우 Row#
). ORDER BY
절을 OVER
절까지 이동해야합니다.
다음은 결과 집합입니다.
Row # | 이름 | recovery_model_desc |
---|---|---|
1 | 마스터 | SIMPLE |
2 | 모델 | FULL |
3 | msdb | 단순 |
4 | tempdb | SIMPLE |
iv id = 추가 recovery_model_desc
열의 “2638b72db3″>
절은 recovery_model_desc
값이 변경되면 번호 매기기를 다시 시작합니다.
다음은 결과 집합입니다.
Row # | 이름 | recovery_model_desc |
---|---|---|
1 | 모델 | FULL |
1 | 마스터 | SIMPLE |
2 | msdb | 단순 |
3 | tempdb | 단순 |
B. 영업 사원에 대한 행 번호 반환
다음 예에서는 연간 누계 판매 순위를 기준으로 Adventure Works Cycles의 영업 사원에 대한 행 번호를 계산합니다.
다음은 결과 집합입니다. .
C.행의 하위 집합 반환
다음 예에서는 SalesOrderHeader
테이블에있는 모든 행의 행 번호를 OrderDate
및 50
행만 60
포함
D. PARTITION과 함께 ROW_NUMBER () 사용
다음 예에서는 PARTITION BY
인수를 사용하여 TerritoryName
열로 쿼리 결과 집합을 분할합니다. div>. OVER
절에 지정된 ORDER BY
절은 SalesYTD
. SELECT
문의 ORDER BY
절은 TerritoryName
에 의해 설정된 전체 쿼리 결과를 정렬합니다.
다음은 결과 집합입니다.
예 : Azure Synapse 분석 및 병렬 데이터웨어 하우스
E. 영업 사원의 행 번호 반환
다음 예에서는 할당 된 판매 할당량을 기준으로 영업 담당자의 ROW_NUMBER
를 반환합니다.
다음은 부분 결과 집합.
F. PARTITION과 함께 ROW_NUMBER () 사용
다음 예제는 PARTITION BY
인수와 함께 ROW_NUMBER
함수를 사용하는 방법을 보여줍니다. 이렇게하면 ROW_NUMBER
함수가 각 파티션의 행에 번호를 매 깁니다.
다음은 부분적인 결과 집합입니다.
참고 항목
RANK (Transact-SQL)
DENSE_RANK (Transact-SQL)
NTILE (Transact-SQL)