MSSQL에는 limit 함수가 따로 제공되지 않는다.
따라서 ROW_NUMBER함수를 통해 각각의 row넘버를 만들어 주고 해당 row의 값을 통해 limit기능을 구현할 수 있다.
방법 1. WITH절 사용
WITH paging AS
(
select ur.DisplayName as Name, REPLACE(ur.ExGroupName, ';','') as Department,
REPLACE(ur.ExJobPositionName, ';','') as Position,
REPLACE(ur.ExJobTitleName, ';','') as Duty, ur.EX_PrimaryMail as Email,
ROW_NUMBER() OVER (ORDER BY ur.DisplayName) AS 'RowNumber'
from dbo.Base_OBJECT_UR as ur
)
SELECT *
FROM paging
WHERE RowNumber BETWEEN 1 AND 10;
하지만 WITH절을 사용하는 것은 좋은 습관이 아니다
여러 WITH절을 사용하게 되면 DeadLock등에 걸릴 위험이 있다.
방법 2. WITH절 사용하지 않기
select tmp.DisplayName as Name, REPLACE(tmp.ExGroupName, ';','') as Department,
REPLACE(tmp.ExJobPositionName, ';','') as Position,
REPLACE(tmp.ExJobTitleName, ';','') as Duty, tmp.EX_PrimaryMail as Email
from(
select ROW_NUMBER() OVER (ORDER BY ur.DisplayName) AS 'RowNumber', *
from dbo.Base_OBJECT_UR as ur
) as tmp
WHERE RowNumber BETWEEN 1 AND 10;