Using the OFFSET / FETCH

2010. 11. 11. 17:11·개발


페이징 기법.

DECLARE
    @PageSize    TINYINT = 20,
    @CurrentPage INT     = 1500;
WITH o AS
(
    SELECT TOP (@CurrentPage * @PageSize)
        
[RowNumber] = ROW_NUMBER() OVER (ORDER BY SalesOrderID),
        
SalesOrderID /* , ... */
    
FROM
        
Sales.SalesOrderHeader
)


SELECT SalesOrderID /* , ... */
    
FROM o
    
WHERE
        
[RowNumber] BETWEEN ((@CurrentPage - 1) * @PageSize + 1)
        AND (((
@CurrentPage - 1) * @PageSize) + @PageSize)
    
ORDER BY
        
[RowNumber];

Now with the new syntax, coming soon to a virtual machine near you, a lot of this messiness and redundancy goes away: 

DECLARE
    
@PageSize    TINYINT = 20,
    
@CurrentPage INT     = 1500;
SELECT SalesOrderID /* , ... */
    
FROM Sales.SalesOrderHeader
    
ORDER BY SalesOrderID
   
OFFSET (@PageSize * (@CurrentPage - 1)) ROWS
   
FETCH NEXT @PageSize ROWS ONLY;


자세한 내용은 원본글인 이곳을 참고해 보세요..

반응형
'개발' 카테고리의 다른 글
  • Eclipse Tomcat plugin
  • WebMatrix Beta3
  • 리팩토링
  • 모델-뷰-컨트롤러(MVC, Model-View-Controller)
zerozyn
zerozyn
블로그
  • zerozyn
    제로노트
    zerozyn
    • 전체 글 보기 (130)
      • 개발 (45)
      • 그림 (0)
      • 일상 (8)
      • 독서 기록 (4)
      • 경제 공부 (0)
      • 생활 정보 (73)
  • hELLO· Designed By정상우.v4.10.3
zerozyn
Using the OFFSET / FETCH
상단으로

티스토리툴바