Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andrericarte

Migracao PostgreSQL -> SQL SERVER

Recommended Posts

Galera seguinte importei o banco perfeitamente já! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

porem <_< preciso adaptar as consultas que estao no software que le os dados agora....

 

Problema: no postgres eu tenho uma consulta assim

 

SELECT usu_cod, usu_nome, usu_login, usu_perm FROM usuarios WHERE usu_nome LIKE 'a' offset 10 limit 100;

 

onde o offset desloca o cursor em 10 posicoes e o limit limita o resultado em 100 ou seja

 

vejo os 100 registros a partir da 10ª posicao.....

 

como faço isso com o SQL SERVER????

Compartilhar este post


Link para o post
Compartilhar em outros sites

infelizmente o SQL Server 2000 não tem essa função que diga-se de passagem é uma mão-na-roda

 

o que tu pode fazer é criar um campo incremental de 1 e 1 jogando numa tabela virtual e fazer um top com where no novo campo incremental criado nessa virtual, exemplo:

select IDENTITY(int, 1,1) as id, * into #Teste from pubs..authorsselect top 10 * from #Teste where id > 10drop table #Teste

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for no SQL Server 2005 tem a função ROW_NUMBER e a função RANK, com elas pode-se eliminar a tabela virtual que era necessário no SQL Server 2000 e fazer em um só comando, exemplo:

 

select * from 	 (SELECT Rank = ROW_NUMBER() OVER (ORDER BY au_id), * FROM dbo.authors ) tabelaXwhere Rank BETWEEN 6 and 10 ORDER BY Rank
mais sobre isso: http://www.aspfaq.com/sql2005/show.asp?id=11

 

 

boa sorte

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera seguinte importei o banco perfeitamente já! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif porem <_< preciso adaptar as consultas que estao no software que le os dados agora....Problema: no postgres eu tenho uma consulta assimSELECT usu_cod, usu_nome, usu_login, usu_perm FROM usuarios WHERE usu_nome LIKE 'a' offset 10 limit 100;onde o offset desloca o cursor em 10 posicoes e o limit limita o resultado em 100 ou sejavejo os 100 registros a partir da 10ª posicao.....como faço isso com o SQL SERVER????

Opa, blzinha?Acho que isso resolve seu problema (mas só rola no SQL 2005):SELECT top 100 usu_cod, usu_nome, usu_login, usu_perm FROM usuarios WHERE usu_nome LIKE 'a' And RowNum > 10Essa query vai retornar os 100 primeiros registros a partir do décimo primeiro!Boa sorte![]'z

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.