2000 에서 사용할때 rowcount / top 를 주로 사용해 구현해 왔던 paging 을 2005에서 row_number 집계함수를 사용해서 쉽게
할수 있게되었군요~
우선 테이블 만들기
CREATE TABLE T_Test
(
id int PRIMARY KEY ,
nick nchar(10),
age int,
context nchar(10)
)
go
테스트 데이터 넣기
insert into T_Test ( id, nick, age, context ) values( 1, '110', 110, 'test' ); insert into T_Test ( id, nick, age, context ) values( 2, '20', 20, 'test' );
insert into T_Test ( id, nick, age, context ) values( 3, '40', 40, 'test' );
insert into T_Test ( id, nick, age, context ) values( 4, '100', 100, 'test' );
insert into T_Test ( id, nick, age, context ) values( 5, '140', 140, 'test' );
insert into T_Test ( id, nick, age, context ) values( 6, '10', 10, 'test' );
go
Paging 쿼리
DECLARE @PageNum AS INT;
DECLARE @PageSize AS INT;SET @PageNum = 1;
SET @PageSize = 2;WITH Paging AS
(
SELECT ROW_NUMBER() OVER( ORDER BY [age] ) AS RowNum, [id], [nick], [age], [context]
FROM [dbo].[T_Test]
)SELECT *
FROM Paging
WHERE RowNum BETWEEN (@PageNum - 1)*@PageSize+1 AND @PageNum * @PageSize
ORDER BY [age];
go
ROW_NUMBER 집계함수
'데이터베이스 > MSSQL' 카테고리의 다른 글
SQL 2008 부터 지원하는 MERGE (머지) (0) | 2012.10.17 |
---|---|
[기본] Cursor (0) | 2012.10.17 |
MSSQL Foreign Key(참조키) 설정 (0) | 2012.09.21 |
MSSQL 스키마 정보 얻기[테이블/프로시저/컬럼]목록들 (0) | 2012.09.21 |
SET NOCOUNT {on / off} (0) | 2012.09.19 |