programing

SQL 마지막 날짜 시간 레코드 가져오기

muds 2023. 8. 24. 22:32
반응형

SQL 마지막 날짜 시간 레코드 가져오기

여러 상태를 저장하는 테이블에서 마지막 날짜/시간 레코드를 가져오려고 합니다.내 테이블은 다음과 같습니다.

+---------+------------------------+-------+
|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   |
+---------+------------------------+-------+

결과는 다음과 같습니다.

+---------+------------------------+-------+
|filename |Dates                   |Status |
+---------+------------------------+-------+
|abc.txt  |2013-02-14 12:20:59.407 |Open   |
|dfg.txt  |2013-02-14 12:20:59.407 |Open   |
+---------+------------------------+-------+

각 파일 이름에 대해 하나의 행을 지정하고 특정 상태를 반영하며 가장 최근 날짜를 나열하려면 다음과 같이 하십시오.

select filename ,
       status   ,
       max_date = max( dates )
from some_table t
group by filename , status
having status = '<your-desired-status-here>'

진정!

SELECT * FROM table
WHERE Dates IN (SELECT max(Dates) FROM table);
SELECT TOP 1 * FROM foo ORDER BY Dates DESC

최신 날짜가 포함된 결과 하나를 반환합니다.

SELECT * FROM foo WHERE foo.Dates = (SELECT MAX(Dates) FROM foo)

최대 날짜가 같은 모든 결과를 밀리초 단위로 반환합니다.

SQL Server용입니다.날짜를 사용하고 싶지만 시간을 사용하지 않으려면 DATEPART 기능을 사용하는 것은 당신에게 맡기겠습니다.

이 작품

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

각 파일 이름에 대해 최대(날짜)가 다를 수 있다는 점을 고려하면, 제 솔루션은 다음과 같습니다.

select filename, dates, status
from yt a
where a.dates = (
  select max(dates)
    from yt b
    where a.filename = b.filename
)
;

http://sqlfiddle.com/ #!18/fdf8d/1/0

HTH

정확한 구문은 물론 데이터베이스에 따라 다르겠지만 다음과 같은 것이 있습니다.

SELECT * FROM my_table WHERE (filename, Dates) IN (SELECT filename, Max(Dates) FROM my_table GROUP BY filename)

이렇게 하면 위에서 요청하고 표시하는 것과 정확히 일치하는 결과를 얻을 수 있습니다.피들: http://www.sqlfiddle.com/ #!2/3af8a/1/0

select max(dates)
from yourTable
group by dates
having count(status) > 1

사용해 보십시오.

SELECT filename,Dates,Status 
FROM TableName 
WHERE Dates In (SELECT MAX(Dates) FROM TableName GROUP BY filename)

언급URL : https://stackoverflow.com/questions/16550703/sql-get-the-last-date-time-record

반응형