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

4
我们有一个名为“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的最新行(基于日期而不是ID)。请注意,一个对象ID可能有多个工作ID,我们需要每个工作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个回答

5
SELECT  *
FROM    (
        SELECT  h.*, 
                ROW_NUMBER() OVER (PARTITION BY workID ORDER BY date DESC) AS rn
        FROM    history
        )
WHERE   rn = 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) 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接