[SQL] 가장 최근의 기록을 검색하는 SQL 쿼리를 작성
SQL가장 최근의 기록을 검색하는 SQL 쿼리를 작성
내 프로젝트 팀에 대한 상태 보드 모듈을 만드는 오전. 상태 보드는 사용자가 또는 축소로 자신의 상태를 설정하고, 그들은 또한 메모를 제공 할 수 있습니다. 나는 하나의 테이블에있는 모든 정보를 저장하는 계획이었다 ... 그리고 데이터의 예는 다음과 같다 :
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 알아 내기 위해 노력하고있다? 어떤 도움을 주시면 감사하겠습니다.
해결법
-
==============================
1.하위 쿼리 파생 테이블에서 집계 한 다음에 가입 할 수 있습니다.
하위 쿼리 파생 테이블에서 집계 한 다음에 가입 할 수 있습니다.
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
-
==============================
2.하위 쿼리를 사용하는 경우 다른 방법이 한 번만 대신 두 배의 테이블을 검색합니다
하위 쿼리를 사용하는 경우 다른 방법이 한 번만 대신 두 배의 테이블을 검색합니다
단지 SQL 서버 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;
-
==============================
3.파생 테이블이 작동 것이다, 그러나 이것은 SQL 2005의 경우는, CTE 및 ROW_NUMBER 청소기 수 있습니다 :
파생 테이블이 작동 것이다, 그러나 이것은 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 상태의 표시를 용이하게한다.
-
==============================
4.또 다른 쉬운 방법 :
또 다른 쉬운 방법 :
SELECT Date, User, Status, Notes FROM Test_Most_Recent WHERE Date in ( SELECT MAX(Date) from Test_Most_Recent group by User)
from https://stackoverflow.com/questions/1049702/create-a-sql-query-to-retrieve-most-recent-records by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 성능 : WHERE WHERE (ROW_NUMBER) 대 (0) | 2020.05.08 |
---|---|
[SQL] 어떻게 GROUP BY를 사용하여 각 그룹의 최신 기록을 얻으려면? [복제] (0) | 2020.05.08 |
[SQL] 임의의 날짜 행을 업데이트하는 방법 (0) | 2020.05.08 |
[SQL] 다른 하나 개의 테이블에서 SQL 데이터를 이동 (0) | 2020.05.08 |
[SQL] SQL에서 UPDATE가 DELETE +의 INSERT보다 항상 빠른? (0) | 2020.05.08 |