[MSSQL] ROWNUM 사용법 정리 (조회 순번, 조회 개수)
- 데이터베이스/MSSQL
- 2021. 2. 17.
SQL Server에서는 오라클에서 사용하는 ROWNUM은 사용할 수 없다. 그러나 TOP과 ROW_NUMBER 함수를 사용하여 비슷한 결과를 만들 수 있다.
ROWNUM은 주로 아래의 2가지 경우에 많이 사용한다.
|
조회 개수를 제한하는 경우
SELECT TOP(5)
ename
, job
, sal
FROM emp
SELECT 절에 TOP(개수)를 사용하여 조회 개수를 제한할 수 있다.
오라클의 ROWNUM은 ORDER BY가 수행되기 전에 개수를 제한하므로 정렬이 적용되지 않지만, TOP은 SELECT 절에 있기 때문에 ORDER BY가 있을 경우 정렬 후 개수를 제한한다.
오라클 예시 : WHERE ROWNUM <= 5
SELECT TOP(4) WITH TIES
job
, deptno
FROM emp
ORDER BY job, deptno
TOP(4) WITH TIES 키워드를 사용하면 마지막 순위와 같은 값을 가진 행인 경우 모두 표시한다.
조회 순번을 매기는 경우
SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS rownum
, ename
, job
, sal
FROM emp
WHERE sal > 2000
ROW_NUMBER 함수를 사용할 때는 ORDER BY를 필수로 사용해야하는데, 의미없는 (SELECT 1)을 부여하여 ORDER BY 없이 조회된 결과의 순번을 부여한다.
오라클의 ROWNUM과 동일하다.
SELECT ROW_NUMBER() OVER(ORDER BY sal DESC) AS rownum
, ename
, job
, sal
FROM emp
WHERE sal > 2000
ORDER BY에 정렬 컬럼을 사용하면 정렬 후 순번이 부여된다.
SELECT ROW_NUMBER() OVER(PARTITION BY job ORDER BY job, sal DESC) AS rownum
, ename
, job
, sal
FROM emp
WHERE sal > 2000
PARTITION BY를 사용하면 그룹별 순번을 부여할 수 있다.