如何在oracle中获取"order by" sql返回的不同类别的索引?



我们可以很容易地得到如下sql结果:

SQL>select Name, Value from table order by Name;
Name   Value
------------
A      1
A      2
B      1
C      5
C      6
C      7

然而,有没有一种方法可以将名称与数字联系起来,从而形成不同名称的索引?假设我们不知道表中有多少不同的名字,也不知道它们是什么。

Name   Value  idx
-----------------
A      1      0 
A      2      0
B      1      1
C      5      2
C      6      2
C      7      2

这可以使用窗口函数轻松完成:

select Name, 
       Value, 
       dense_rank() over (order by name) - 1 as idx
from table 
order by Name;

最新更新