이번에는 행 일련번호를 가져오는 방법에 대해서 정리를 해보고자 합니다.
Oracle에서는 ROWNUM 함수가 있어서
쉽게 가져올 수 있었습니다.
그런데 SQL SERVER 에서는 쉽게 가져올 수는 없네요..
가져올 수 있는 방법은 있지만
Oracle에 비해서 MS-SQL이 더 복잡하고 하네요.
방법은 ROW_NUMBER 함수를 이용하는 것입니다.
우선, Microsoft에 나와있는 설명을 가지고 오도록 하겠습니다.
결과 집합의 출력 번호를 지정합니다. 보다 구체적으로는, 결과 집합 파티션 내의 행 일련 번호를 반환합니다. 각 파티션의 첫 번째 행은 1로 시작합니다.
ROW_NUMBER와 RANK는 유사합니다. ROW_NUMBER는 모든 행의 번호를 순차적으로 지정합니다(예: 1, 2, 3, 4, 5). RANK는 순위 동률(예: 1, 2, 2, 4, 5)에 대해 동일한 숫자 값을 제공합니다.
구문은
ROW_NUMBER ( )
OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )
이렇게 사용.
예)
SELECT
ROW_NUMBER() OVER(ORDER BY name ASC) AS Row#,
name, recovery_model_desc
FROM sys.databases
WHERE database_id < 5;
https://docs.microsoft.com/ko-kr/sql/t-sql/functions/row-number-transact-sql?view=sql-server-2017
SELECT ROW_NUMBER() OVER(ORDER BY name ASC) AS Row#, name, recovery_model_desc FROM sys.databases WHERE database_id < 5;
SELECT ROW_NUMBER() OVER(ORDER BY name ASC) AS Row#, name, recovery_model_desc FROM sys.databases WHERE database_id < 5;
보시면 정렬 기준만 틀린 상황이고,
결과는 정렬된 값이 다르게 나오고 있습니다.
즉, 해당 컬럼을 기준으로 정렬을 하면서
행 일련번호를 가져오게 하는 것입니다.
뭔가 좀 아쉽지만
어쩔 수 없네요.
이상으로 MS-SQL에서 순차적으로 행 일련번호를 가져오는 방법이였습니다~
'컴퓨터관련 > MS-SQL' 카테고리의 다른 글
[MS-SQL]트리거 확인하기 (0) | 2019.04.01 |
---|---|
[MS-SQL]TOP에 변수 사용하여 데이터 가져오기 (0) | 2019.03.29 |
[MS-SQL]SSMS 단축키 지정하기 (0) | 2019.03.20 |
[MS SQL]IF문 사용하기 (2) | 2019.03.19 |
[MS-SQL]조건문 CASE WHEN 사용하기 (2) | 2019.03.18 |