MSSQL 순번 매기기, 순서 지정 방법 (ROW_NUMBER)

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 = '청계천로'
PARTITION BY 절 추가 예시 화면입니다.


이 글이 도움이 되셨다면 공유를 부탁드립니다. 다음 글에서 뵙겠습니다!

위로 스크롤