MSSQL 순번 매기기, 순서 지정 방법 (ROW_NUMBER)
MS SQL에서는 RANK, NTILE, DENSE_RANK, ROW_NUMBER 4개의 순위 함수를 제공하고 있습니다. 그중에서도 결과 집합의 출력 번호를 지정하는 ROW_NUMBER 함수가 가장 많이 사용하는 것 같습니다. 특정 쿼리문 결과 데이터에 순번을 지정할 필요가 있을 때 ROW_NUMBER 함수를 사용하시면 됩니다.
그럼 간단한 예제를 통해서 ROW_NUMBER() 함수에 대해서 알아보죠.
포스트 기준
– Microsoft SQL Server 2019
– SSMS 18.10
구문
▶ 결과 집합 데이터 내의 행 일련번호를 반환합니다. 첫 번째 행은 1로 시작합니다.
구문 (syntaxsql)
ROW_NUMBER ( ) OVER ( [ PARTITION BY value_expression , … [ n ] ] order_by_clause )
사용 예제
1. 예제 1) 정렬이 필요 없이 일련번호 표시 방법
SELECT -- 정렬이 필요 없는 경우 (임의 처리)
ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS Row#,
COLUMN1, COLUMN5, COLUMN7, COLUMN2, COLUMN4
FROM BS_ROAD (NOLOCK)
WHERE COLUMN5 = '서울특별시'
AND COLUMN2 = '청계천로'
2. 예제 2) 정렬이 있는 경우 일련번호 표시 방법
SELECT -- 정렬이 있는 경우
ROW_NUMBER() OVER (ORDER BY COLUMN5, COLUMN2) AS Row#,
COLUMN1, COLUMN5, COLUMN7, COLUMN2, COLUMN4
FROM BS_ROAD (NOLOCK)
WHERE COLUMN5 = '서울특별시'
AND COLUMN2 = '청계천로'
3. 예제 3) PARTITION BY 절 추가
SELECT -- PARTITION BY 절 추가
ROW_NUMBER() OVER (PARTITION BY COLUMN7 ORDER BY COLUMN5, COLUMN2) AS Row#,
COLUMN1, COLUMN5, COLUMN7, COLUMN2, COLUMN4
FROM BS_ROAD (NOLOCK)
WHERE COLUMN5 = '서울특별시'
AND COLUMN2 = '청계천로'
이 글이 도움이 되셨다면 공유를 부탁드립니다. 다음 글에서 뵙겠습니다!