2015-01-20 2 views
0

У меня есть таблица, например, так:Найти последнее вхождение записи в SQL

 Id | Modified | OwnerId| Mode 
    ----+----------+---------+----- 
    1 | 14/01/14 | 101 | On 
    2 | 14/02/21 | 102 | Off 
    3 | 14/03/21 | 102 | On 
    4 | 14/04/21 | 102 | Off 
    5 | 14/05/21 | 102 | On 
    6 | 14/05/22 | 105 | Off 
    7 | 14/06/21 | 102 | Off 

Я хочу найти последнее вхождение каждого OwnerId где режим равен «Off», как так:

 Id | Modified | OwnerId| Mode 
    ----+----------+---------+----- 
    6 | 14/05/22 | 105 | Off 
    7 | 14/06/21 | 102 | Off 

Как я могу это достичь?

ответ

2

Sth, как это должно работать:

SELECT Id, Modified, OwnerId, Mode 
FROM (
    SELECT Id, Modified, OwnerId, Mode, 
      ROW_NUMBER() OVER(PARTITION BY OwnerId ORDER BY Modified DESC) As rn 
    FROM MyTable 
    Where Mode = 'Off' 
) t 
WHERE t.rn = 1 
+0

Ого, я искал в течение нескольких часов для решения этой проблемы и видел много вариаций, которые на самом деле не вырезать его, но вышеупомянутый запрос именно то, что Я искал! Спасибо. –

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