Obtener un determinado registro en SELECT

06/11/2003 - 17:27 por Ronald Espinosa | Informe spam
Alguien sabe como puedo obtener determinado número de
registro en el resultado de una consulta en SQL SERVER
2000 ?

Necesito el equivalente a:

En VFP : SELECT * FROM TABLA WHERE RECNO = 15
En ORACLE : SELECT * FROM TABLA WHERE ROWNUM = 15

Como se hace en SQL Server 2000 ? No me sirve utilizar el
TOP porque la tabla tiene muchos registros.

Preguntas similare

Leer las respuestas

#11 Javier Loria
07/11/2003 - 01:02 | Informe spam
Hola Ronald:
Cuando hacer un TOP 5 te da siempre 5 filas, aun cuando al ordenar una o
mas filas "empaten" en el 5to lugar, simplemente el SQL escoge alguna y esa
te la da.
El WITH TIES te da en ocasiones mas de 5 filas pero es "consistente",
de manera que te da todas las filas que empaten en el 5to lugar.
En este caso es necesario porque el criterio de ordenamiento no es Llave
Primaria o Unique por ende puede haber mas de una fila empatada.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Ronald Espinosa escribio:
Gracias Javier por tu respuesta, pero la verdad no
entiendo la sentencia "WITH TIES * ", me podría aclarar un
poco el uso de esto.

Gracias.
Respuesta Responder a este mensaje
#12 Manuel \(Salamanca\)
07/11/2003 - 10:13 | Informe spam
Hola,
haber si te sirve este ejemplo: con esto te sacaría 10 registros empezando
en el registro 500. Hay que tener en cuenta un sistema de ordenación para
ambas selects, y una clave primaria que en este ejemplo sería Id. Los
numeros de los top podrían ser variables pasadas en un procedimiento
almacenado.


SELECT TOP 10 'Los campos que necesites'
FROM Tabla
WHERE Id NOT IN (Select Top 500 Id From Tabla ORDER BY Campo)
ORDER BY Campo

Espero que te sirva,
Un saludo



"Ronald Espinosa" escribió en el mensaje
news:006201c3a482$e411a050$
Alguien sabe como puedo obtener determinado número de
registro en el resultado de una consulta en SQL SERVER
2000 ?

Necesito el equivalente a:

En VFP : SELECT * FROM TABLA WHERE RECNO = 15
En ORACLE : SELECT * FROM TABLA WHERE ROWNUM = 15

Como se hace en SQL Server 2000 ? No me sirve utilizar el
TOP porque la tabla tiene muchos registros.
Respuesta Responder a este mensaje
#13 Miguel Egea
07/11/2003 - 10:37 | Informe spam
Hola Patrick, efectivamente con Ado se puede, no con Ado.net, pero por otra
parte esto se está internamente implementando con cursores de servidor, que
no son demasiado recomendables si quieres que tu entorno sea muy escalable.

Saludos
Miguel Egea
"Patrick Espinosa" escribió en el mensaje
news:#
Ronald, si estás utilizando ADO por qué no usas las propiedades
PageSize y AbsolutePage del objecto recordset? Podrías dividirlo
en páginas de tamaño 10 y luego posicionarte en la página 50
así obtendrías sólo los registros del 500 al 510

Saludos.
Patrick Espinosa.

"Ronald Espinosa" escribió en el mensaje
news:006201c3a482$e411a050$
Alguien sabe como puedo obtener determinado número de
registro en el resultado de una consulta en SQL SERVER
2000 ?

Necesito el equivalente a:

En VFP : SELECT * FROM TABLA WHERE RECNO = 15
En ORACLE : SELECT * FROM TABLA WHERE ROWNUM = 15

Como se hace en SQL Server 2000 ? No me sirve utilizar el
TOP porque la tabla tiene muchos registros.


Respuesta Responder a este mensaje
#14 Liliana Sorrentino
07/11/2003 - 12:26 | Informe spam
Manuel, TOP no acepta variables...
Liliana.

"Manuel (Salamanca)" escribió en el mensaje
news:
Hola,
haber si te sirve este ejemplo: con esto te sacaría 10 registros empezando
en el registro 500. Hay que tener en cuenta un sistema de ordenación para
ambas selects, y una clave primaria que en este ejemplo sería Id. Los
numeros de los top podrían ser variables pasadas en un procedimiento
almacenado.


SELECT TOP 10 'Los campos que necesites'
FROM Tabla
WHERE Id NOT IN (Select Top 500 Id From Tabla ORDER BY Campo)
ORDER BY Campo

Espero que te sirva,
Un saludo



"Ronald Espinosa" escribió en el mensaje
news:006201c3a482$e411a050$
Alguien sabe como puedo obtener determinado número de
registro en el resultado de una consulta en SQL SERVER
2000 ?

Necesito el equivalente a:

En VFP : SELECT * FROM TABLA WHERE RECNO = 15
En ORACLE : SELECT * FROM TABLA WHERE ROWNUM = 15

Como se hace en SQL Server 2000 ? No me sirve utilizar el
TOP porque la tabla tiene muchos registros.


Respuesta Responder a este mensaje
#15 Manuel \(Salamanca\)
07/11/2003 - 12:31 | Informe spam
Si contruyes una select dinamica SI, pq yo lo tengo implentado asi y
funciona a las mil maravillas...

"Liliana Sorrentino" escribió en el mensaje
news:%
Manuel, TOP no acepta variables...
Liliana.

"Manuel (Salamanca)" escribió en el mensaje
news:
> Hola,
> haber si te sirve este ejemplo: con esto te sacaría 10 registros


empezando
> en el registro 500. Hay que tener en cuenta un sistema de ordenación


para
> ambas selects, y una clave primaria que en este ejemplo sería Id. Los
> numeros de los top podrían ser variables pasadas en un procedimiento
> almacenado.
>
>
> SELECT TOP 10 'Los campos que necesites'
> FROM Tabla
> WHERE Id NOT IN (Select Top 500 Id From Tabla ORDER BY Campo)
> ORDER BY Campo
>
> Espero que te sirva,
> Un saludo
>
>
>
> "Ronald Espinosa" escribió en el mensaje
> news:006201c3a482$e411a050$
> Alguien sabe como puedo obtener determinado número de
> registro en el resultado de una consulta en SQL SERVER
> 2000 ?
>
> Necesito el equivalente a:
>
> En VFP : SELECT * FROM TABLA WHERE RECNO = 15
> En ORACLE : SELECT * FROM TABLA WHERE ROWNUM = 15
>
> Como se hace en SQL Server 2000 ? No me sirve utilizar el
> TOP porque la tabla tiene muchos registros.
>
>


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