Recuperar un número determinado de registros

16/02/2006 - 17:14 por Keyhelp | Informe spam
Hola a todos:

Espero que alguien sepa como hacerlo porque a mi no me da la imaginación.
Tengo una sentencia select normal y corriente que recupera unos 100
registros, pero quiero ir recuperándolo de 10 en 10 en vez de todos a la
vez.

SELECT TOP 10 * from MyTable;

Me devuelve los 10 primeros.. pero del 11 al 20 no sé como recuperarlo.

¿Existe alguna instrucción parecida como en Oracle que ponías un intervalo?

Gracias por adelantado.


Francisco López
Keyhelp, S.L.
Departamento de desarrollo

Preguntas similare

Leer las respuestas

#1 Noldis Chumacero
16/02/2006 - 17:27 | Informe spam
Francisco,

Me parece que lo que tienes que utilizar deberían ser Cursores, y realizar
el tipo de cálculo que quieres.

Este es el ejemplo que viene con SQL
READ_ONLY
FOR SELECT au_fname FROM pubs.dbo.authors

DECLARE @name varchar(40)
OPEN test_cursor

FETCH NEXT FROM test_cursor INTO @name
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
DECLARE @message varchar(100)
SELECT @message = 'my name is: ' + @name
PRINT @message
END
FETCH NEXT FROM test_cursor INTO @name
END

CLOSE test_cursor
DEALLOCATE test_cursor



Ing. Noldis Chumacero Chávez
Departamento de Sistemas
AeroSur S.A.
Santa Cruz de la Sierra, Bolivia
Telf. 3364446(236) 77074919
"Keyhelp" (dot)net> escribió en el mensaje
news:OiT$

Hola a todos:

Espero que alguien sepa como hacerlo porque a mi no me da la imaginación.
Tengo una sentencia select normal y corriente que recupera unos 100
registros, pero quiero ir recuperándolo de 10 en 10 en vez de todos a la
vez.

SELECT TOP 10 * from MyTable;

Me devuelve los 10 primeros.. pero del 11 al 20 no sé como
recuperarlo.

¿Existe alguna instrucción parecida como en Oracle que ponías un
intervalo?

Gracias por adelantado.


Francisco López
Keyhelp, S.L.
Departamento de desarrollo



Respuesta Responder a este mensaje
#2 Keyhelp
16/02/2006 - 17:49 | Informe spam
Gracias por la respuesta pero no puedo usar cursores, ha de ser con una sola
sentencia SELECT, es decir que cuando ejecute la select me devuelva
directamente los registros que le pido, no recorrerlos todos y mostrar solo
los que me interesa.

"Noldis Chumacero" escribió en el mensaje
news:%

Francisco,

Me parece que lo que tienes que utilizar deberían ser Cursores, y realizar
el tipo de cálculo que quieres.

Este es el ejemplo que viene con SQL
READ_ONLY
FOR SELECT au_fname FROM pubs.dbo.authors

DECLARE @name varchar(40)
OPEN test_cursor

FETCH NEXT FROM test_cursor INTO @name
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
DECLARE @message varchar(100)
SELECT @message = 'my name is: ' + @name
PRINT @message
END
FETCH NEXT FROM test_cursor INTO @name
END

CLOSE test_cursor
DEALLOCATE test_cursor



Ing. Noldis Chumacero Chávez
Departamento de Sistemas
AeroSur S.A.
Santa Cruz de la Sierra, Bolivia
Telf. 3364446(236) 77074919
"Keyhelp" (dot)net> escribió en el mensaje
news:OiT$
>
> Hola a todos:
>
> Espero que alguien sepa como hacerlo porque a mi no me da la


imaginación.
> Tengo una sentencia select normal y corriente que recupera unos 100
> registros, pero quiero ir recuperándolo de 10 en 10 en vez de todos a la
> vez.
>
> SELECT TOP 10 * from MyTable;
>
> Me devuelve los 10 primeros.. pero del 11 al 20 no sé como
> recuperarlo.
>
> ¿Existe alguna instrucción parecida como en Oracle que ponías un
> intervalo?
>
> Gracias por adelantado.
>
>
> Francisco López
> Keyhelp, S.L.
> Departamento de desarrollo
>
>
>



Respuesta Responder a este mensaje
#3 Gustavo Larriera [MVP]
16/02/2006 - 18:24 | Informe spam
Puedes usar la función ROW_NUMBER. Hay miles de artículos en la web, este es
tan solo el primero que encontré:

http://davidhayden.com/blog/dave/ar.../2652.aspx

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.

"Keyhelp" (dot)net> wrote in message
news:OiT$
Hola a todos:

Espero que alguien sepa como hacerlo porque a mi no me da la imaginación.
Tengo una sentencia select normal y corriente que recupera unos 100
registros, pero quiero ir recuperándolo de 10 en 10 en vez de todos a la
vez.

SELECT TOP 10 * from MyTable;

Me devuelve los 10 primeros.. pero del 11 al 20 no sé como
recuperarlo.

¿Existe alguna instrucción parecida como en Oracle que ponías un
intervalo?

Gracias por adelantado.


Francisco López
Keyhelp, S.L.
Departamento de desarrollo


Respuesta Responder a este mensaje
#4 Keyhelp
17/02/2006 - 10:16 | Informe spam
Gracias por la respuesta pero usamos el SQL Server 2000, creo que esta
función solo es para el 2005 o estará desde la versión 2003 en adelante...

Se admiten nuevas ideas.

"Gustavo Larriera [MVP]" escribió en el mensaje
news:%
Puedes usar la función ROW_NUMBER. Hay miles de artículos en la web, este


es
tan solo el primero que encontré:

http://davidhayden.com/blog/dave/ar.../2652.aspx

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.

"Keyhelp" (dot)net> wrote in message
news:OiT$
> Hola a todos:
>
> Espero que alguien sepa como hacerlo porque a mi no me da la


imaginación.
> Tengo una sentencia select normal y corriente que recupera unos 100
> registros, pero quiero ir recuperándolo de 10 en 10 en vez de todos a la
> vez.
>
> SELECT TOP 10 * from MyTable;
>
> Me devuelve los 10 primeros.. pero del 11 al 20 no sé como
> recuperarlo.
>
> ¿Existe alguna instrucción parecida como en Oracle que ponías un
> intervalo?
>
> Gracias por adelantado.
>
>
> Francisco López
> Keyhelp, S.L.
> Departamento de desarrollo
>
>


Respuesta Responder a este mensaje
#5 Gustavo Larriera [MVP]
17/02/2006 - 16:22 | Informe spam
How to dynamically number rows in a SELECT Transact-SQL statement
http://support.microsoft.com/defaul...US;q186133

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.

"Keyhelp" (dot)net> wrote in message
news:
Gracias por la respuesta pero usamos el SQL Server 2000, creo que esta
función solo es para el 2005 o estará desde la versión 2003 en adelante...

Se admiten nuevas ideas.

"Gustavo Larriera [MVP]" escribió en el mensaje
news:%
Puedes usar la función ROW_NUMBER. Hay miles de artículos en la web, este


es
tan solo el primero que encontré:

http://davidhayden.com/blog/dave/ar.../2652.aspx

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and
confers
no rights.

"Keyhelp" (dot)net> wrote in message
news:OiT$
> Hola a todos:
>
> Espero que alguien sepa como hacerlo porque a mi no me da la


imaginación.
> Tengo una sentencia select normal y corriente que recupera unos 100
> registros, pero quiero ir recuperándolo de 10 en 10 en vez de todos a
> la
> vez.
>
> SELECT TOP 10 * from MyTable;
>
> Me devuelve los 10 primeros.. pero del 11 al 20 no sé como
> recuperarlo.
>
> ¿Existe alguna instrucción parecida como en Oracle que ponías un
> intervalo?
>
> Gracias por adelantado.
>
>
> Francisco López
> Keyhelp, S.L.
> Departamento de desarrollo
>
>






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida