Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-12-2004
Carlex Carlex is offline
Miembro
 
Registrado: feb 2004
Ubicación: Bolivia
Posts: 88
Poder: 23
Carlex Va por buen camino
Talking

Gracias basti tu ayuda me sirvio de maravillas pero luego de revisiones exite un problema:
cada CI(Carnets) tiene a su vez CP(comprobantes)y cuando un CI tiene mas de un CP solo me muestra el primero...arreglando el query:

select CI, Pagos, Fecha, CP from Tabla tbl
where Fecha = (select Max(Fecha) from Tabla where CI = tbl.CI AND CP=tbl.CP)

me vota bien los resultados, pero cuando ya son muchos registros tarda tanto q sale Tiempo de espera agotado...Esto estoy haciendo en SQL Server 2000...esta mal el codigo o como puedo optimizarlo? Muchas Gracias
Responder Con Cita
  #2  
Antiguo 02-12-2004
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 22
basti Va por buen camino
Hola:

Ahora mismo no se me ocurre otra forma de consulta que te pudiese dar mejores resultados. Para acelerarlo podrías crear algún índice sobre los campos Fecha, CI y CP.

Puedes probar incluso a crear un índice compuesto por los tres campos, o uno por fecha y otro por CI + CP. Prueba a ver cual te da mejores resultados.

un saludo
Responder Con Cita
  #3  
Antiguo 25-06-2012
Karzie Karzie is offline
Registrado
NULL
 
Registrado: jun 2012
Posts: 5
Poder: 0
Karzie Va por buen camino
Obtener el ultimo Registro del grupo por mayor fecha.

Veo que han pasado años y todavia no responde tu pregunta,

Quizas esta query te sirva:

select CI, Pagos, Fecha from Tabla tbl
where EXISTS(select CI,Max(Fecha) As Fecha from Tabla Group by CI HAVING CI = tbl.CI And Max(Fecha) = tbl.Fecha)


Saludos,
Responder Con Cita
  #4  
Antiguo 25-06-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #5  
Antiguo 26-06-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 20
mightydragonlor Va por buen camino
Lo que yo siempre hago es muy simple, hago la consulta con los filtros normales, le aplico orden descendente y sólo recibo el primer registro con:
SELECT TOP 1
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #6  
Antiguo 26-06-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pero aquí se trata de encontrar el último registro de cada grupo y no sé cómo se aplicaría lo que comentas.

// Saludos
Responder Con Cita
  #7  
Antiguo 26-06-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 20
mightydragonlor Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Pero aquí se trata de encontrar el último registro de cada grupo y no sé cómo se aplicaría lo que comentas.

// Saludos
Tienes razón roman, acá dejo como se haría:
Código Delphi [-]
SELECT DISTINCT
  CI,
  (SELECT TOP 1 Pagos FROM TABLA WHERE CI = T.CI ORDER BY Fecha Desc) AS [Ultimo Pago],
  (SELECT TOP 1 Fecha FROM TABLA WHERE CI = T.CI ORDER BY Fecha Desc) AS [Ultima Fecha]
FROM TABLA AS T

Aunque contiene 2 subconsultas, he probado esto en una base de datos que tengo, con una tabla que maneja una estructura demasiado parecida y que tiene 2'331.476 registros y se ejecuta bastante rápido, pero también es cierto que si se hace con un Group By y un Having, puede ser mas veloz la consulta.

Saludos.
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 20:15:23.


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