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

consulta de maxfecha() sql

Estas en el tema de consulta de maxfecha() sql en el foro de Oracle en Foros del Web. quiero recuperar el contrato con la fecha mayor de un cliente. FECHA_HORA_VERSION--CIF-----------------CONTRATO 02/16/2012 17:30:17 A01011410 208546 06/19/2012 17:51:30 A01022664 216151 05/30/2012 13:10:20 A01022664 216112 05/17/2012 ...
  #1 (permalink)  
Antiguo 15/11/2012, 03:10
 
Fecha de Ingreso: septiembre-2007
Mensajes: 268
Antigüedad: 16 años, 7 meses
Puntos: 8
consulta de maxfecha() sql

quiero recuperar el contrato con la fecha mayor de un cliente.

FECHA_HORA_VERSION--CIF-----------------CONTRATO
02/16/2012 17:30:17 A01011410 208546
06/19/2012 17:51:30 A01022664 216151
05/30/2012 13:10:20 A01022664 216112
05/17/2012 15:41:05 A01022664 213929
04/25/2012 13:04:46 A01022664 213931
07/18/2011 11:48:04 A01022664 207599
05/29/2012 10:05:55 A03161270 216477
04/17/2012 12:09:17 A03161270 207642

es decir que para el cif a01022664 solo me devuelva el contrato 216151.

Muchas gracias y perdonen las molestias.
  #2 (permalink)  
Antiguo 15/11/2012, 05:09
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: consulta de maxfecha() sql

Código SQL:
Ver original
  1. SELECT * FROM Tabla
  2. WHERE FECHA =
  3. (SELECT MAX(FECHA) FROM TABLA WHERE CIF = 'a01022664')
  4. AND CIF = 'a01022664'
  #3 (permalink)  
Antiguo 15/11/2012, 06:47
 
Fecha de Ingreso: septiembre-2007
Mensajes: 268
Antigüedad: 16 años, 7 meses
Puntos: 8
Respuesta: consulta de maxfecha() sql

Y si hay dos filas con la misma fecha como puedo solo recuperar una.

06/19/2012 17:51:30 A01022664 216151
06/19/2012 17:51:30 A01022664 216112

Un saludo y muchas gracias.
  #4 (permalink)  
Antiguo 15/11/2012, 07:11
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: consulta de maxfecha() sql

Cita:
Y si hay dos filas con la misma fecha como puedo solo recuperar una.
La pregunta es cual?

Si es cualquiera puedes poner un rownum.

Código SQL:
Ver original
  1. SELECT * FROM Tabla
  2. WHERE FECHA =
  3. (SELECT MAX(FECHA) FROM TABLA WHERE CIF = 'a01022664')
  4. AND CIF = 'a01022664'
  5. AND ROWNUM =1;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 15/11/2012, 07:25
 
Fecha de Ingreso: septiembre-2007
Mensajes: 268
Antigüedad: 16 años, 7 meses
Puntos: 8
Respuesta: consulta de maxfecha() sql

Esa solucion no me vale porque el CIF es opcional es decir que puede que me devuelvan todas las filas por cliente. es decir que para el ejemplo que he puesto.

FECHA_HORA_VERSION--CIF-----------------CONTRATO
02/16/2012 17:30:17 A01011410 208546
06/19/2012 17:51:30 A01022664 216151
06/19/2012 17:51:30 A01022664 216112
05/17/2012 15:41:05 A01022664 213929
04/25/2012 13:04:46 A01022664 213931
07/18/2011 11:48:04 A01022664 207599
05/29/2012 10:05:55 A03161270 216477
04/17/2012 12:09:17 A03161270 207642

lo que quiero que devuelva es:

FECHA_HORA_VERSION--CIF-----------------CONTRATO
02/16/2012 17:30:17 A01011410 208546
06/19/2012 17:51:30 A01022664 216151
05/29/2012 10:05:55 A03161270 216477

Muchas gracias y perdonen las molestias, ahora mismo tengo un problema porque esto es una subconsulta y al hacer el join con la otra, aparecen filas repetidas.
  #6 (permalink)  
Antiguo 15/11/2012, 09:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 268
Antigüedad: 16 años, 7 meses
Puntos: 8
Respuesta: consulta de maxfecha() sql

al final lo he solucionando agrupando el resultado por CIF y usando la funcion MAX, para que me devuelva el contrato mas alto, como el contrato es una secuencia he supuesto que el ultimo es el mayor, si tienen una fecha igual.

SELECT CIF,MAX(CONTRATO) FROM Tabla
WHERE FECHA =
(SELECT MAX(FECHA) FROM TABLA WHERE CIF = 'a01022664')
AND CIF = 'a01022664'
GROUP BY CIF;

Muchas gracias.

Etiquetas: sql
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 20:40.