2014-01-29 3 views
-2

У меня есть таблица, которая имеет несколько значений для идентификатора, и я хочу найти только одну строку для каждого идентификатора, где поле даты является самым новым, а затем, если есть еще дубликаты, просто выберите один с самым низким id.Поиск одной строки для идентификатора

Моя таблица выглядит телицы так:

UniqueID | CustomerId | Name | Address | InspDate 
1   1   Bob 123  2013/08/05 00:00:00 
2   1   Bob 123  2013/08/05 00:00:00 
3   1   Bob 123  2013/03/01 00:00:00 

Так что я хочу только строку с UniqueID 1, чтобы показать, чтобы показать в этом примере.

Также я хочу ограничить его только теми, кто совершил вдохновение в течение последнего года, если это возможно.

ответ

0
SELECT t.* 
FROM 
    yourtable t INNER JOIN (
    SELECT MIN(UniqueID) as Min_ID 
    FROM 
     yourtable t1 INNER JOIN (SELECT CustomerID, MAX(InspDate) Max_date 
           FROM yourtable 
           GROUP BY CustomerID) m 
     ON t1.CustomerID=m.CustomerID AND t1.InspDate=m.Max_date 
    GROUP BY t1.CustomerID) mi 
    ON t.UniqueID = mi.Min_ID 

См. Скрипку here.

Смежные вопросы