2013-10-30 2 views
0

나는 'UserLibrary'나는 서로 다른 사용자의 목록을 원하는반복 행의 그룹의 가장 최근 얻기

Name Library AccessedTime 

    A  ABC  2:00 am 
    B  XYZ  4:00 am 
    C  PQR  5:00 am 
    C  PQR  12:00 pm 
    C  PQR  2:00 pm 
    D  LIT  4:00 pm 

, 도서관과 마지막 액세스 시간 테이블이있다.

UserLibrary에서

선택 *, C. 그렇게 기본적으로 내가 원하는

을, 나에게 사용자 'C'및 라이브러리 'PQR'에 대한 반복 행을 제공하지만, 난 단지 사용자의 마지막 액세스 시간을 원할 것입니다

Name Library AccessedTime 

    A  ABC  2:00 am 
    B  XYZ  4:00 am 
    C  PQR  2:00 pm 
    D  LIT  4:00 pm 

SQL 서버에서이 작업을 수행하는 방법

답변

1
select Name, Library, max(AccessedTime) as 'AccessedTime' 
from UserLibrary 
group by Name, Library 
1

필터링 할 수있는 일련 번호를 생성하는 ROW_NUMBER()을 사용할 수 있습니다. 이 경우 namelibrary마다 순차 번호가 생성되고 최신 AccessedTime으로 정렬됩니다. 최신 레코드는 rn1의 값을 갖습니다.

SELECT Name, Library, AccessedTime 
FROM 
(
    SELECT Name, Library, AccessedTime, 
      ROW_NUMBER() OVER (PARTITION BY Name, Library 
           ORDER BY AccessedTime DESC) rn 
    FROM UserLibrary 
) a 
WHERE a.rn = 1 
+0

고마워 ... 그게 내가이 당신이 그것을에 다른 값을 갖는 많은 다른 열이있는 경우 도움이 될 수 있습니다 :-) – Marcus25

+0

가지고 빠른 대답 . –

관련 문제