ultimo - SQL obtiene el último registro de hora de fecha
obtener mes y año de una fecha sql (8)
Esta pregunta ya tiene una respuesta aquí:
Estoy tratando de obtener el último registro de fecha y hora de una tabla que ocurre para almacenar varios estados. Mi mesa se ve así:
+---------+------------------------+-------+
|filename |Dates |Status |
+---------+------------------------+-------+
|abc.txt |2012-02-14 12:04:45.397 |Open |
|abc.txt |2012-02-14 12:14:20.997 |Closed |
|abc.txt |2013-02-14 12:20:59.407 |Open |
|dfg.txt |2012-02-14 12:14:20.997 |Closed |
|dfg.txt |2013-02-14 12:20:59.407 |Open |
+---------+------------------------+-------+
Los resultados deben ser
+---------+------------------------+-------+
|filename |Dates |Status |
+---------+------------------------+-------+
|abc.txt |2013-02-14 12:20:59.407 |Open |
|dfg.txt |2013-02-14 12:20:59.407 |Open |
+---------+------------------------+-------+
La sintaxis exacta, por supuesto, dependerá de la base de datos, pero algo como:
SELECT * FROM my_table WHERE (filename, Dates) IN (SELECT filename, Max(Dates) FROM my_table GROUP BY filename)
Esto le dará resultados exactamente lo que solicita y muestra arriba. Fiddle: http://www.sqlfiddle.com/#!2/3af8a/1/0
Prueba esto:
SELECT filename,Dates,Status
FROM TableName
WHERE Dates In (SELECT MAX(Dates) FROM TableName GROUP BY filename)
Si desea una fila para cada nombre de archivo, reflejando un estado específico y listando la fecha más reciente, este es su amigo:
select filename ,
status ,
max_date = max( dates )
from some_table t
group by filename , status
having status = ''<your-desired-status-here>''
¡Fácil!
Teniendo en cuenta que max (fechas) puede ser diferente para cada nombre de archivo, mi solución:
SELECT distinct filename
,last_value(dates)over (PARTITION BY filename ORDER BY filename)posd
,last_value(status)over (PARTITION BY filename ORDER BY filename )poss
FROM distemp.dbo.Shmy_table
http://sqlfiddle.com/#!3/c94a2/2
HTH
este trabajo
select filename, dates, status
from yt a
where a.dates = (
select max(dates)
from yt b
where a.filename = b.filename
)
;
SELECT * FROM table
WHERE Dates IN (SELECT max(Dates) FROM table);
SELECT TOP 1 * FROM foo ORDER BY Dates DESC
Volverá un resultado con la última fecha.
SELECT * FROM foo WHERE foo.Dates = (SELECT MAX(Dates) FROM foo)
Devolverá todos los resultados que tengan la misma fecha máxima, al milisegundo.
Esto es para SQL Server. DATEPART que utilice la función DATEPART si desea usar fechas pero no horas.
select max(dates)
from yourTable
group by dates
having count(status) > 1