Поиск последней повторяющейся строки в (Oracle) SQL - PullRequest
4 голосов
/ 23 декабря 2010

У нас есть таблица history , которая определена следующим образом:

--ID (pk) -----------Object ID--------------Work ID--------date------
  1                  1111                   AAAA           1/1/2010
  2                  1111                   AAAA           1/2/2010
  3                  2222                   BBBB           1/1/2010
  4                  3333                   CCCC           1/1/2010
  5                  1111                   DDDD           1/3/2010

Нам нужна последняя (на основе даты, а не на основе ID) строка PER Work ID.Обратите внимание, что у идентификатора объекта может быть несколько рабочих идентификаторов, и нам нужен последний для КАЖДОГО рабочего идентификатора.

Что нам нужно в нашем наборе результатов:

ID (pk) -----------Object ID--------------Work ID--------date------
2                  1111                   AAAA           1/2/2010
3                  2222                   BBBB           1/1/2010
4                  3333                   CCCC           1/1/2010
5                  1111                   DDDD           1/3/2010

Мысли / Идеи?

Ответы [ 2 ]

4 голосов
/ 23 декабря 2010
SELECT  *
FROM    (
        SELECT  h.*, 
                ROW_NUMBER() OVER (PARTITION BY workID ORDER BY date DESC) AS rn
        FROM    history
        )
WHERE   rn = 1
0 голосов
/ 23 декабря 2010
select * from your_table a where (a.date, a.work_id)  in (select max(b.date), b.work_id from your_table b where a.work_id=b.work_id group by work_id) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...