ORACLE如何使用RANK功能

时间:2018-10-25 15:32:42

标签: sql oracle window-functions

早上好

我现在无法获得想要的结果。

例如我的代码是

select 
    a.donor_id AS ID
  , a.date_of_record
  , RANK() OVER (PARTITION BY a.donor_id,a.date_of_record  ORDER BY date_of_record) r_nk
from table a

结果是

ID ----------------Date_of_record-----r_nk
012                12/14/2017         1
012                12/20/2017         1
012                12/20/2017         1

但是我想这样显示

 ID ----------------Date_of_record-----r_nk
    012                12/14/2017         1
    012                12/20/2017         1
    012                12/20/2017         2

我不确定上面的代码为什么不起作用,

非常感谢您!

1 个答案:

答案 0 :(得分:3)

或者,您可以使用ROW_NUMBER(),以便每一行都有一个唯一值。

select 
    a.donor_id AS ID
  , a.date_of_record
  , ROW_NUMBER() OVER (PARTITION BY a.donor_id,a.date_of_record  ORDER BY date_of_record) r_nk
from table a