无顺序排名

Ranking without an order by

有没有办法在不按列排序的情况下创建 row_number "on the fly"?我有这个查询:

select regexp_substr(',A-B,B-C,C-D', '[^,]+', 1, level) as legs
          from dual
        connect by regexp_substr(',A-B,B-C,C-D', '[^,]+', 1, level) is not null

而且我需要保持我的轮换顺序,但我也需要一个等级来确保轮换是好的。我试着看看附近的排名,dense_rank,row_number,...但是他们都需要一个顺序,我不能使用。

它会给出这样的东西

Rank   |   Legs  
 1     |   A-B
 2     |   B-C
 3     |   C-D

您可以只使用 level,尽管您需要为其设置别名:

select level as rnk,
  regexp_substr(',A-B,B-C,C-D', '[^,]+', 1, level) as legs
from dual
connect by regexp_substr(',A-B,B-C,C-D', '[^,]+', 1, level) is not null;

       RNK LEGS       
---------- ------------
         1 A-B         
         2 B-C         
         3 C-D