[RESOLVIDO] Paginação SqlServer 2008 R2

Olá amigos, estive pesquisando varias formas de fazer paginação com o Sql Server já que ele não tem LIMIT, ai achei a melhor forma (eu acho :slight_smile: )

Me baseando nesse link: http://blog.melatti.com.br/sql/4-paginacao-no-sql-server-2005 , descobri o pulo do gato para poder ir da pagina 1 para a pagina 2 corretamente:

with paginacao as
(
select row_number() over (order by nome_do_campo asc) as 'rownumber', 
campo1,campo2,etc
from tabela
where nom_moeda like '%x%' collate Latin1_General_CI_AI
) select * from paginacao
where rownumber between 1+first and 1+first+pagesize

O segredinho esta em acrescentar 1 no first e somar o first ao pagesize + 1.

Abraços e espero ter ajudado

Jomello

Geralmente faço assim:

-- para mostrar do 6 ao 10 SELECT TOP 5 * FROM noticias WHERE id NOT IN (SELECT TOP 5 id FROM noticias)

é isso,
espero ter ajudado


Daniel Miloca,
Umuarama-PR

Opa tudo bem Daniel, agradeço a sua colaboração.

Aqui faltou dizer dois pontos importantes:

1 - A minha solução refere-se a versão SQLServer 2008 R2, me parece que a nova versão teve mudanças significativas.

2 - A forma que coloquei é para paginação do tipo LAZY e já transformando a string de pesquisa levando em conta os acentos e maiusculos/minusculos.

Agradeço novamente e fique com Deus

Abraços

Jomello

link pra conhecimento, no sql server 2012 terá dois recursos novos: OFFSET e FETCH, ficará bem mais fácil fazer a paginação

http://marcosfreccia.wordpress.com/2012/07/17/t-sql-no-sql-server-2012-parte-2-paginacao-de-dados/