Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Obtener la cantidad total pero seleccionar solo X rows

Estas en el tema de Obtener la cantidad total pero seleccionar solo X rows en el foro de SQL Server en Foros del Web. Estimados tengo una duda. Tengo una Query que trata de obtener 1000 rows de X registros, funciona, pero me gustaría saber si existe alguna manera ...
  #1 (permalink)  
Antiguo 29/03/2017, 18:09
Avatar de Namiwis  
Fecha de Ingreso: mayo-2013
Ubicación: Crustaceo Cascarudo
Mensajes: 162
Antigüedad: 11 años, 6 meses
Puntos: 10
Obtener la cantidad total pero seleccionar solo X rows

Estimados tengo una duda.

Tengo una Query que trata de obtener 1000 rows de X registros, funciona, pero me gustaría saber si existe alguna manera de, a esa query agregarle que retorne la cantidad total de registros, aunque solo seleccione 1000, y no hacerlo en un query por separado... espero se entienda jeje

Mi query es la siguiente (he tratado de optimizarla lo mas que mis pocos conocimientos me han alcanzado)

Código SQL:
Ver original
  1. SELECT fecha,nombre,NoTrans FROM Registros
  2. WHERE usuario = 'ElUsuario'
  3. AND fecha >= CONVERT(datetime,'2017-03-01T00:00:00.000') AND fecha <= CONVERT(datetime,'2017-03-31T23:59:59.997')
  4. AND EXISTS(SELECT id FROM Usuarios WHERE parametro IN('portal_usuario') AND valor IN('ElUsuario'))
  5. AND EXISTS(SELECT id FROM Usuarios WHERE parametro IN('portal_password') AND valor IN('ElPasswordDelUsuario'))
  6. ORDER BY fecha
  7. OFFSET 0 ROWS
  8. FETCH NEXT 1000 ROWS ONLY

Es viable? o lo sigo haciendo como hasta ahora, 2 query por separado, uno para obtener el count y el otro para los registros...

Saludos.
__________________
http://binarysuns.com.mx/

Última edición por Namiwis; 29/03/2017 a las 18:26
  #2 (permalink)  
Antiguo 30/03/2017, 09:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Obtener la cantidad total pero seleccionar solo X rows

En un solo query usando el offset no vas a poder sacar lo que necesitas, ya que offset limita los registros a los que le pides(el query no esta regresando todo el dataset sino solo los registros indicados) en este caso el count seria de 1000
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 30/03/2017, 10:17
Avatar de Namiwis  
Fecha de Ingreso: mayo-2013
Ubicación: Crustaceo Cascarudo
Mensajes: 162
Antigüedad: 11 años, 6 meses
Puntos: 10
Respuesta: Obtener la cantidad total pero seleccionar solo X rows

Muchas gracias por su apoyo Sr. Libras, abusando de su amabilidad, a la query expuesta arriba, he intentado agregarle un IF NOT EXISTS para cuando el usuario o password no coincidan, pero no he podido, sera que me pueda apoyar dándome una idea de como hacerlo?

Saludos.
__________________
http://binarysuns.com.mx/
  #4 (permalink)  
Antiguo 30/03/2017, 11:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Obtener la cantidad total pero seleccionar solo X rows

Ponerlo en el mismo query con exists no se va a poder porque no vas a tener la condicion que exista o que no exista :S y si le ponemos un OR siempre va a entrar porque mientras se cumpla una condicion el OR regresa un valor.

Lo mas sencillo seria hacerlo de esta manera:


Código SQL:
Ver original
  1. DECLARE @parametro1 INT
  2. DECLARE @parametro2 INT
  3.  
  4. SET @parametro1=NULL
  5. SET @parametro2=NULL
  6.  
  7. SELECT @parametro1=id FROM Usuarios WHERE parametro IN('portal_usuario') AND valor IN('ElUsuario')
  8.  
  9. SELECT @parametro2=id FROM Usuarios WHERE parametro IN('portal_password') AND valor IN('ElPasswordDelUsuario')
  10.  
  11.  
  12. IF isnull(@parametro1,0)<>0 AND isnull(@parametro2<>0)
  13. SELECT fecha,nombre,NoTrans FROM Registros
  14. WHERE usuario = 'ElUsuario'
  15. AND fecha >= CONVERT(datetime,'2017-03-01T00:00:00.000') AND fecha <= CONVERT(datetime,'2017-03-31T23:59:59.997')
  16. ORDER BY fecha
  17. OFFSET 0 ROWS
  18. FETCH NEXT 1000 ROWS ONLY
  19. ELSE
  20.  otra cosa
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 03/04/2017, 14:15
Avatar de Namiwis  
Fecha de Ingreso: mayo-2013
Ubicación: Crustaceo Cascarudo
Mensajes: 162
Antigüedad: 11 años, 6 meses
Puntos: 10
Respuesta: Obtener la cantidad total pero seleccionar solo X rows

Gracias Sr. Libras un poco adaptado funciono perfectamente.

Saludos.
__________________
http://binarysuns.com.mx/

Etiquetas: cantidad, rows, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:29.