반응형
가장 최근 레코드를 검색하는 SQL 쿼리 만들기
프로젝트 팀을위한 상태 게시판 모듈을 만들고 있습니다. 상태 보드를 통해 사용자는 자신의 상태를 in 또는 out으로 설정할 수 있으며 메모도 제공 할 수 있습니다. 모든 정보를 단일 테이블에 저장할 계획이었는데 데이터의 예는 다음과 같습니다.
Date User Status Notes
-------------------------------------------------------
1/8/2009 12:00pm B.Sisko In Out to lunch
1/8/2009 8:00am B.Sisko In
1/7/2009 5:00pm B.Sisko In
1/7/2009 8:00am B.Sisko In
1/7/2009 8:00am K.Janeway In
1/5/2009 8:00am K.Janeway In
1/1/2009 8:00am J.Picard Out Vacation
데이터를 쿼리하고 각 사용자의 최신 상태를 반환하고 싶습니다.이 경우 쿼리는 다음 결과를 반환합니다.
Date User Status Notes
-------------------------------------------------------
1/8/2009 12:00pm B.Sisko In Out to lunch
1/7/2009 8:00am K.Janeway In
1/1/2009 8:00am J.Picard Out Vacation
나는 이것을 실현하기 위해 TRANSACT-SQL을 알아 내려고 노력하고 있습니까? 어떤 도움을 주시면 감사하겠습니다.
하위 쿼리
파생 테이블 에서 집계
한 다음 조인합니다.
Select Date, User, Status, Notes
from [SOMETABLE]
inner join
(
Select max(Date) as LatestDate, [User]
from [SOMETABLE]
Group by User
) SubMax
on [SOMETABLE].Date = SubMax.LatestDate
and [SOMETABLE].User = SubMax.User
다른 방법으로 하위 쿼리를 사용하는 경우 두 번이 아니라 한 번만 테이블을 스캔합니다.
SQL Server 2005 이상 만
select Date, User, Status, Notes
from (
select m.*, row_number() over (partition by user order by Date desc) as rn
from [SOMETABLE] m
) m2
where m2.rn = 1;
파생 테이블은 작동하지만 이것이 SQL 2005 인 경우 CTE 및 ROW_NUMBER가 더 깨끗할 수 있습니다.
WITH UserStatus (User, Date, Status, Notes, Ord)
as
(
SELECT Date, User, Status, Notes,
ROW_NUMBER() OVER (PARTITION BY User ORDER BY Date DESC)
FROM [SOMETABLE]
)
SELECT User, Date, Status, Notes from UserStatus where Ord = 1
이것은 또한 각 사용자의 가장 최근 x 상태의 표시를 용이하게합니다.
또 다른 쉬운 방법 :
SELECT Date, User, Status, Notes
FROM Test_Most_Recent
WHERE Date in ( SELECT MAX(Date) from Test_Most_Recent group by User)
참조 URL : https://stackoverflow.com/questions/1049702/create-a-sql-query-to-retrieve-most-recent-records
반응형
'code' 카테고리의 다른 글
Apache POI를 사용하여 Excel에서 셀 병합 (0) | 2020.12.27 |
---|---|
React는 자동 완성을 렌더링하지 않습니다. (0) | 2020.12.27 |
QNetworkAccessManager를 사용하여 URL에 데이터를 게시하는 방법 (0) | 2020.12.27 |
아키텍처 i386 clang에 대한 중복 기호 (0) | 2020.12.26 |
Perl로 C를 쓰는 사람을 고용해야합니까? (0) | 2020.12.26 |