2011-04-14 2 views
1

하나의 필드에서 고유 한 레코드 목록을 반환하는 SQL 문을 공식화하려하지만 중복 레코드 (한 필드)가 날짜 필드에 더 새로운 날짜와 함께 있으면 "고유 한"레코드로 선택되어야합니다.하나의 필드와 날짜를 기반으로 DISTINCT 레코드 목록이 필요합니다

즉.

Field 1 Field 2 Field 3 
A  3/28/11 Jimmy 
A  4/11/11 Tom 
B  3/29/11 Harry 
C  4/12/11 Tom 
C  3/30/11 Jimmy 

생산겠습니까 :

A  4/11/11 Tom 
B  3/29/11 Harry 
C  4/12/11 Tom 

은 "고유"필드는 필드 1.

+1

dbms는 무엇입니까? –

+0

둘 중 날짜가 같은 경우 어떻게하나요? 기본 키는 어디에 있습니까? –

답변

2
SELECT A.Field1, A.Field2, A.Field3 
FROM myTable A 
INNER JOIN (
    SELECT B.Field1, MAX(B.Field2) AS MaxDate 
    FROM myTable B 
    GROUP BY B.Field1) AS B 
     ON A.Field1 = B.Field1 AND A.Field2 = B.MaxDate 
ORDER BY A.Field1 

주 : 나는이 쿼리 &를 시도하지 않은의를 쓰고 무엇을해야 있다.

+0

당신은'B, Field1'을 가졌습니다. – RichardTheKiwi

+0

@ 리차드 : 고마워요. – shahkalpesh

+0

필자는 이것이 내 필요에 더 가깝다고 생각하지만 실제 데이터베이스 (Access2007)는 두 개의 테이블을 사용하고 있으며 더 가까이서 보입니다. – Mhonzell

관련 문제