FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Subconsulta para escojer el ultimo de cada registro?
Buenas, tengo una consulta q por mas q la pienso no encuentro la funcion q me permita, lo siguiente: tengo una serie de registros con datos comunes q varian en montos y en fechas, lo q deseo es obtener el ultimo registro de cada grupo es decir algo asi:
Tabla inicial: CI Pagos fecha 123 50 30/10/96 123 23 31/11/96 123 45 31/12/96 436 45 30/10/96 436 96 31/11/96 436 87 31/12/96 576 63 30/10/96 576 74 31/11/96 se obtenga el siguiente resultado CI Pagos fecha 123 45 31/12/96 436 87 31/12/96 576 74 31/11/96 el ultimo pago por cada ci, una ayuda lo unico q se me ocurre es q tendria q sea con una subconsulta...help, gracias de antemano |
#2
|
|||
|
|||
Buenas.
Lo que comentas yo lo suelo hacer por parámetros que se le pasan a la consulta y se recojen desde un formulario. Creo que en tu caso deberías de pasar el grupo que quieres consultar. |
#3
|
|||
|
|||
Quizas pueda servir esto:
Select CI, max(fecha), max(pago) From Tabla Group By CI Si el valor de pago es único para la fecha más alta de un CI creo que esta select debe sacar primero la máxima fecha de cada CI y después buscará el máximo pago que será único...supongo... Saludos. |
#5
|
|||
|
|||
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 |
#6
|
|||
|
|||
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 |
#7
|
|||
|
|||
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, |
#8
|
||||
|
||||
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 |
#9
|
|||
|
|||
Y SI NO DESEO SELECCIONAR EL ULTIMO SI NO EL PENULTIMO
Tabla inicial: CI Pagos fecha 123 50 30/10/96 123 23 31/11/96 123 45 31/12/96 436 45 30/10/96 436 96 31/11/96 436 87 31/12/96 576 63 30/10/96 576 74 31/11/96 se obtenga el siguiente resultado CI Pagos fecha 123 23 31/11/96 123 23 31/11/96 576 63 30/10/96 |
#10
|
||||
|
||||
Bienvenido, por favor, lee nuestra guía de estilo, gracias.
|
#11
|
|||
|
|||
Una solución prudente creo seria esta.
SQL.
Se que es un post pasado pero puede servir a alguien. Para el Penultimo.
Última edición por abelg fecha: 24-09-2018 a las 21:58:54. |
|
|
|