Мне нужен ОТДЕЛЬНЫЙ список записей, основанный на одном поле и дате

#sql #distinct

#sql #отдельный

Вопрос:

Я пытаюсь сформулировать инструкцию SQL, которая вернет список записей, которые отличаются в одном поле, но если присутствует дублирующая запись (на основе одного поля) с более новой датой в поле даты, тогда ее следует выбрать как «отдельную» запись.

ie.

 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
  

Поле «Distinct» — это поле 1.

Комментарии:

1. Что, если у двух из них одинаковая дата? Где ваш первичный ключ?

Ответ №1:

 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
  

Примечание: Я не пробовал этот запрос и пишу его таким, каким он должен быть.

Комментарии:

1. Я подозреваю, что это ближе к моим потребностям, но фактическая база данных (Access2007) использует две таблицы и выглядит ближе к: