Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2011
jangel_ramirezm jangel_ramirezm is offline
Miembro
 
Registrado: ago 2007
Ubicación: León Gto. Mex.
Posts: 39
Poder: 0
jangel_ramirezm Va por buen camino
Últimos 3 registros ordenados descendestes mas la union de otros con datos fijos

Hola

Antes que nada buenas tardes, y de antemano muchas gracias por tomarse el tiempo de leer este hilo
mi duda es la siguiente :

Estoy haciendo un reporte en fastreport donde debo mostrar los 3 últimos abonos de una cuenta, en caso de que no tenga 3 muestro datos fijos, la consulta SQL(SQL Server 2005) que tengo es la Siguiente:

Código SQL [-]
SELECT TOP 3 FECHA, IMPORTE, SALDO_ACT, NUM_RECIBO, TIPO_MOV FROM ABONOS  
  UNION SELECT  '01/01/1900' fecha, 0 IMPORTE, 0 SALDO_ACT, 0 NUM_RECIBO , 'X'  
  UNION SELECT  '31/12/1899' fecha, 0, 0, 0, 'X'  
  UNION SELECT  '30/12/1899' fecha, 0, 0, 0, 'X'         
WHERE NUM_CUENTA = :NUM_CUENTA 
ORDER BY FECHA DESC

el caso es que esta consulta me trae los 3 primeros registros de la tabla y las uniones, y me piden los 3 últimos y las uniones
alguna idea de como deberia armar la consulta para obtener los datos como los piden?.

Muchos saludos. y de nuevo gracias

Última edición por Casimiro Notevi fecha: 30-09-2011 a las 20:07:31.
Responder Con Cita
  #2  
Antiguo 30-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por jangel_ramirezm Ver Mensaje
el caso es que esta consulta me trae los 3 primeros registros de la tabla y las uniones, y me piden los 3 últimos y las uniones
alguna idea de como deberia armar la consulta para obtener los datos como los piden?.
Muchos saludos. y de nuevo gracias
esa partecita no la entendi...

quieres sacar los 3 ultimos, en caso de que existen menos de 3 registros debes colocar datos fijos hasta completar los 3 registros. es asi como lo quieres?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 30-09-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
En FastReports hay una opción para limitar el número de registros que se imprimen. Allí tienes una herramienta para solucionar tu problema. Otra sería limitar el número de registros devueltos por la base de datos. Sé como se puede hacer en Firebird, pero de SQL Server no tengo ni idea.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 30-09-2011
jangel_ramirezm jangel_ramirezm is offline
Miembro
 
Registrado: ago 2007
Ubicación: León Gto. Mex.
Posts: 39
Poder: 0
jangel_ramirezm Va por buen camino
Muchas gracias por su respuesta,
en fastreport si limito el numero de registros a mostrar en 3, la consulta puede arrojar como máximo 6 registros (el top 3 y la uniones)
y como minimo 3 (las uniones) y asi en caso de que haya menos de 3 abonos (devueltos por el top 3) por lo menos mostraria los datos de la uniones, pero el problema está en la consulta ya que yo espero obtener los ultimos 3 registros y esta devuelve los primero 3
Ej:

Asi es como devuelve la consulta actual
01/01/2011, 100, 1000, 1, A (Datos como devuelve el top 3 )
02/01/2011, 100, 900, 2, A
03/01/2011, 100, 800, 3, A
01/01/1900, 0, 0, 0, X (datos de las uniones)
31/12/1899, 0, 0, 0, X
30/12/1899, 0, 0, 0, X

asi es como lo solicitaron

30/09/2011, 100, 100, 1, A
29/09/2011, 100, 200, 2, A
28/08/2011, 100, 300, 3, A
01/01/1900, 0, 0, 0, X (datos de las uniones)
31/12/1899, 0, 0, 0, X
30/12/1899, 0, 0, 0, X

he intentado poner el order by antes de las uniones pero marca error de sintaxis, vi una funcion LAST pero sigue marcando error,
intenté crear una vista pero los datos que me devuelve son los mismo ya que no he sabido como armar bien la sentencia.

Gracias por su ayuda.

Saludos
Responder Con Cita
  #5  
Antiguo 30-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
sigo sin comprender
porque segun la pregunta original.. eran solo 3 registros los que querias mostrar?
porque no pones un ejemplo de los datos que tienes...
menciona tambien como es que solicitas los datos.... pides solo los 3 ultimos? o tu colocas las fechas a pedir
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 30-09-2011
jangel_ramirezm jangel_ramirezm is offline
Miembro
 
Registrado: ago 2007
Ubicación: León Gto. Mex.
Posts: 39
Poder: 0
jangel_ramirezm Va por buen camino
Hola

La consulta que hago puede devolver hasta 6 registros, en el fast report yo solo muestro 3
lo que me pidieron fue que mostrara los últimos 3, pero como puede haber cuentas que no tengan
3 abonos, le agregue el union con los datos fijos para rellenar esos espacios asi por lo menos la consulta
devolveria 3 registros.

probé con una subconsulta y creo que funcionó, me apoyé de un campo que es la llave primaria de la tabla

Código SQL [-]
  SELECT   FECHA, IMPORTE, SALDO_ACT, NUM_RECIBO, TIPO_MOV FROM     
  ABONOS  where   rec_id in (select top 3 rec_id from abonos where num_cuenta = 43  ORDER BY FECHA DESC)  
  UNION  SELECT  '01/01/1900' fecha, 0 IMPORTE, 0 SALDO_ACT, 0 NUM_RECIBO , ''  
  UNION  SELECT  '31/12/1899' fecha, 0, 0, 0, ''  
  UNION  SELECT  '30/12/1899' fecha, 0, 0, 0, ''         
  order by fecha desc

muchas gracias por su ayuda y por el tiempo que se toman para responder

Saludos.

Última edición por ecfisa fecha: 30-09-2011 a las 23:19:09. Razón: Corregir problema de etiquetas ( WYSIWYG )
Responder Con Cita
  #7  
Antiguo 30-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ok
si ya te salio...
bien !!!!!
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consultar los ultimos registros de una tabla FGarcia Firebird e Interbase 18 09-10-2008 18:07:45
Como mostrar registros ordenados a la inversa Dean PHP 2 25-09-2008 17:39:25
Mostrar los últimos 100 registros dade SQL 4 19-10-2006 04:22:45
Copiar registros ordenados a otras tablas... Phacko Conexión con bases de datos 6 06-01-2005 01:08:27
Imprimir un nº de registros fijos con RAVE Er_Manué Impresión 2 17-07-2003 10:41:38


La franja horaria es GMT +2. Ahora son las 09:37:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi