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

Ran*_*yaa 4 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
Run Code Online (Sandbox Code Playgroud)

我们需要最新的(基于日期的而非基于 ID 的)行 PER Work 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
Run Code Online (Sandbox Code Playgroud)

想法/想法?

Qua*_*noi 5

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