查找(Oracle)SQL中的最后一个重复行

时间:2010-12-23 17:55:01

标签: sql oracle select

我们有一个历史表,其定义如下:

--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

我们需要最新的(基于日期的基于NOT ID的)行PER工作ID。请注意,对象ID可以包含多个工作ID,我们需要最新的EACH工作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 个答案:

答案 0 :(得分:4)

SELECT  *
FROM    (
        SELECT  h.*, 
                ROW_NUMBER() OVER (PARTITION BY workID ORDER BY date DESC) AS rn
        FROM    history
        )
WHERE   rn = 1

答案 1 :(得分:0)

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)