SQL - Mayor fecha

 
Vista:

Mayor fecha

Publicado por chema (4 intervenciones) el 07/12/2006 12:41:57
En una tabla se almacenan para registro una fecha, y debo extraer el registro con la mayor fecha, pero si existe alguno con la fecha a null debo extraer dicho registro, y sino el de mayor fecha

Un saludo y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Mayor fecha

Publicado por Liliana (426 intervenciones) el 07/12/2006 16:23:17
Hola,
Para obtener la mayor fecha de una tabla:

SELECT FechaMaxima = MAX (Fecha)
FROM Tabla

Entonces para acceder a los datos de esa fila:

SELECT Clave, Dato, Fecha, OtrasColumnas
FROM Tabla
WHERE Fecha = (SELECT FechaMaxima = MAX (Fecha) FROM Tabla)

Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Mayor fecha

Publicado por chema (4 intervenciones) el 07/12/2006 16:46:53
Gracias Liliana por responder,

Hasta aqui lo tenia + o - claro, pero el problema es que la fecha puede tener valor NULO, y ese caso debo recoger solo la fecha NULA , sino existe NULA debo recoger la máxima....

No se si me explico....

Un saludo,

Chema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Mayor fecha

Publicado por Liliana (426 intervenciones) el 07/12/2006 17:03:11
Chema,
las funciones de agregado (max, min, sum, etc, MENOS COUNT), imiten los valores NULL.
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Mayor fecha

Publicado por chema (4 intervenciones) el 07/12/2006 18:09:26
Ok, estoy de acuerdo,

-Si tengo N fechas pero ninguna es NULA, con un MAX(fecha) funciona correctamente porque me devuelve un unico registro con la mayor fecha.

-Si tengo N fechas pero una es NULA, con un MAX (fecha ) me devuelve la mayor fecha, que en ningun caso es el NULO, por lo tanto si quisiera obtener el NULO deberia realizar un MIN(fecha) lo cual me soluciona esta casuistica, pero no la anterior.

Lo siento si soy pesado pero es que quizas veo algo complicado, donde no lo hay ( acostumbra a suceder )

Gracias y un saludo Liliana

Chema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Mayor fecha

Publicado por Liliana (426 intervenciones) el 07/12/2006 18:35:58
Ahora entiendo...

IF (SELECT COUNT(Clave) FROM Tabla WHERE Fecha IS NULL) > 0
SELECT * FROM Tabla WHERE Fecha IS NULL
ELSE
SELECT Clave, Dato, Fecha, OtrasColumnas FROM Tabla WHERE Clave = (SELECT MAX(Fecha) FROM Tabla)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Mayor fecha

Publicado por chema (4 intervenciones) el 07/12/2006 18:55:48
Ok, eso es,

El tema es que no queria recurrir a una función, pensaba que con algún decode o algo del estilo podria solucionar el tema con una única query.

Bien de todas maneras muchas gracias,

Un saludo,

Chema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Mayor fecha

Publicado por juan (1 intervención) el 05/03/2015 15:58:35
Cuando ya tengo tres subconsulta, como podria hacerlo? pq me genera un error cuando hago mas de tres subconsulta de la misma table.

pq tengo tres subconsulta. Queria el siguiente resultado:

Tengo una tabla que tiene registros con un campo: NIVEL que contienen registros ('DEUDA' Y 'PAGO') pero solo quiero los clients que solo tienen pago, ya que existen otros que tienen regiestro de pago y deuda.

primero selecione todos los clients que tienen registros con deudas, luego hice una sub consulta para extraer solos los clients que tienen los registros de pagos, es decir, que no tienen registros con deuda.

luego hice otra subconsulta para extraer los registros con la ultima fecha, pero quiero el registro con todos los campos. ver la table al final.

select distinct ca.identificacion ,fecha_maxima = MAX(ca.FECHA) ,u.usern ,CA.nivel
from az..ca left join az..cd on cd.I=ca.I left join az..u on ca.A = u.I
where
ca.identificacion = '123456'
and
not exists
(SELECT c.identificacion
FROM az..c left join az..cd on cd.I=ca.I left join az..u on ca.A = u.I

where
ca.identificacion = '123456' and c.nivel = 'deuda' and ca.identificacion = c.identificacion
)
group by a.identificacion ,u.usern ,CA.nivel

Resultado
a.identificacion fecha_maxima usern nivel
'123456' '09/09/2010 16:12' 'elloco' 'deuda'
'123456' '25/03/2014 03:06' 'malapaga' 'deuda'
'123456' '11/09/2014 15:23' 'busque' 'deuda'


pero yo quiero que solo me salga el ultimo registro
a.identificacion fecha_maxima usern nivel
'123456' '11/09/2014 15:23' 'busque' 'deuda'

ya que esta es la fecha maxima
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar