RedPlus 개인 블로그

시삽: 레드플러스 님 
게시판 이동:
 제목 : SQL Server ROW_NUMBER() 함수 사용법 및 페이징(Paging) 처리 관련 쿼리문
글번호: 231
작성자: Administrator ( 레드플러스 / redplus@live.com )
작성일: 2011/04/06 오후 1:18:00 (2011/04/06 오후 1:18:00 수정)
조회수: 4321

 

-- Row_Number() 함수 사용법 및 페이징 처리
use AdventureWorks;

select * from Sales.vSalesPerson;

-- 연간 판매 실적에 따른 영업 사원의 고유한 행 번호 반환
select
 Firstname, LastName,
 ROW_NUMBER() Over(Order By SalesYTD Desc) As 'Row Number',
 SalesYTD
from Sales.vSalesPerson
where TerritoryName Is Not Null And SalesYTD <> 0;

-- 행의 하위 집합 반환 : 고유 행번호 50~60까지만 출력
With OrderedOrders
As
 (
  Select
   SalesOrderID, OrderDate,
   ROW_NUMBER() Over (Order By OrderDate) As 'RowNumber'
  From Sales.SalesOrderHeader
 )
Select * From OrderedOrders Where RowNumber Between 50 And 60;

-- 특정 필드를 그룹으로 묶어서 그 안에서 또 다른 고유행번호를 출력
select
 Firstname, LastName,
 ROW_NUMBER() Over(Partition By PostalCode Order By SalesYTD Desc)
 As 'Row Number',
 SalesYTD,
 PostalCode
from Sales.vSalesPerson
where TerritoryName Is Not Null And SalesYTD <> 0;

-- 페이징 기법
With OrderedOrders
As
 (
  Select
   SalesOrderID, OrderDate,
   ROW_NUMBER() Over (Order By OrderDate) As 'RowNumber'
  From Sales.SalesOrderHeader
 )
Select * From OrderedOrders Where RowNumber Between 50 And 60;

-- 페이징 처리 함수
Create Function GetOrdersPage(@Page Int, @PageSize Int)
Returns Table
As
Return
 With OrderedOrders
 As
  (
   Select
    SalesOrderID, OrderDate,
    ROW_NUMBER() Over (Order By OrderDate) As 'RowNumber'
   From Sales.SalesOrderHeader
  )
 Select * From OrderedOrders
 Where RowNumber
  Between (@Page - 1) * @PageSize + 1 And (@Page * @PageSize)
;

-- 페이징 함수 사용
select * From GetOrdersPage(2, 5); -- 1~10, 11~20

 

 

 

 

 

 

 

 

 

 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트


관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 메서드(Method)로 발음합시다. - Administrator 2011-04-07 4032
현재글 SQL Server ROW_NUMBER() 함수 사용법 및 페이징(Paging) 처리... - Administrator 2011-04-06 4321
다음글 HTML5 Canvas quadraticCurveTo()와 bezierCurveTo(... - Administrator 2011-03-23 4096
관련 페이지 리스트
numtitlenamedateview
388 C 언어에서 값 전달과 참조 전달(Call By Value and Call By Re... Administrator 2023-03-09 3571
387 병합 알고리즘 순서도 2022-10-22 5115
386 C 언어 강의: scanf를 엔터키를 기준으로 여러 행으로 값을 입력 받기 Administrator 2022-01-09 4411
385 C 언어: scanf 사용해서 표준 입력인 콘솔로부터 나이를 정수로 입력 받아 출력 Administrator 2022-01-07 3222
384 Java 코드 샘플 - Function 인터페이스로 람다 식 만들기 Administrator 2022-01-04 3121
383 C# 코드 샘플 - 널 조건부 연산자 사용하기 Administrator 2022-01-02 3157
382 C# 코드 샘플 - 널 병합 연산자와 default 키워드 Administrator 2022-01-02 3070
381 C# 코드 샘플 - 널 병합 연산자로 문자열 변수의 NULL 값 확인하기 Administrator 2022-01-02 2981
380 C# 강의 - 14세 미만 체크 메서드 구현 Administrator 2022-01-01 3036
379 C 언어 천 단위 콤마 찍기 thousands_separator.c Administrator 2021-12-30 4170
378 for 문 순서도 - for 문(for loop) 순서도(flowchart) Administrator 2021-12-28 6882
377 C 언어 코드 샘플 - 전처리기 - 조건부 컴파일 Administrator 2021-12-27 3060
376 C 언어 코드 샘플 - 전처리기 - 매크로 함수 Administrator 2021-12-27 3031
375 http-server 설치하기 - 로컬 루프백 주소로 웹페이지 실행 2021-12-27 3031
374 C 언어 코드 샘플 - N명의 학생의 점수를 입력받아 1차원 배열에 저장 후 총점 구... Administrator 2021-12-27 3086
373 Java 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 2962
372 C 언어 코드 샘플 - 두 수의 합을 구하는 함수 Administrator 2021-12-26 3006
371 C# 교과서 강좌 - LINQ - Select 확장 메서드에 익명 형식 사용하기 Administrator 2021-12-26 3125
370 C# 교과서 강의 - LINQ - Select 확장 메서드를 사용하여 새로운 형태로 ... Administrator 2021-12-26 3037
369 C 언어 코드 샘플 - static-shared - 정적(공유) 변수 사용하기 Administrator 2021-12-26 3056
 
 
 
손님 사용자 Anonymous (손님)
로그인 Home