SQL 2005 ROW 활용NUMBER()OVER 페이지 기능 구현

2211 단어 ROW NUMBER()
1.먼저 ROW 소개NUMBER()OVER 의 기본 용법

2.실례 데이터 보기
데이터 초기 화
create table employee (empid int ,deptid int ,salary decimal(10,2))
insert into employee values(1,10,5500.00)
insert into employee values(2,10,4500.00)
insert into employee values(3,20,1900.00)
insert into employee values(4,20,4800.00)
insert into employee values(5,40,6500.00)
insert into employee values(6,40,14500.00)
insert into employee values(7,40,44500.00)
insert into employee values(8,50,6500.00)
insert into employee values(9,50,7500.00)
데이터 결과 표시
 

부서 별 그룹(deptid)에 따라 각 부서 의 임금(salary)등급 을 표시 합 니 다.
 
이것 은 얻 고자 하 는 결과 이다.두 번 째 열 은 부서 에 따라 조 를 나 누고,세 번 째 열 은 임금 이 높 은 것 에서 낮은 것 으로,rank 는 부서 내부 의 배열 을 한다.
 
3.간단하게 페이지 를 나 누 어 실현
SELECT  Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee
위의 1,2 시 에 따 르 면 이 SQL 은 임금 인하 순서에 따라 순 위 를 매 긴 후에 도 PARTITION BY COLUMN 을 통 해 구역 을 나 누 지 않 았 고 rownumber()는 1 부터 각 그룹 기록 에 숫자 를 되 돌려 줍 니 다.결 과 는 다음 과 같다.
 

위 SQL 에서 되 돌아 온 결과 집합 을 데이터 시트 로 사용 합 니 다.
(SELECT  Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee)as NewTable
만약 우리 가 페이지 당 5 개의 기록 을 가지 고 있다 면,
그러면 첫 페이지 에 select*from(SELECT)을 표시 합 니 다.  Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee ) as NewTable where rank between 1 and 5

두 번 째 페이지 는 select*from(SELECT)  Row_Number() OVER (ORDER BY salary desc) rank,* FROM employee ) as NewTable where rank between 6 and 10
 

물론 우리 2 페이지 에는 4 개의 기록 만 있다.
페이지 를 나 누 는 것 도 이렇게 이 루어 졌 고,다 표 조회 에 대해 페이지 를 나 누 는 것 도 마찬가지다.

좋은 웹페이지 즐겨찾기