Есть аналитика RANK, DENSE_RANK и ROW_NUMBER для определения порядкового номера строки в соответствии с критериями сортировки. Они отличаются тем, как они обрабатывают строки, которые не отличаются в столбцах заказа. [Например, вы можете получить 1,1,3 или 1,1,2 или 1,2,3.]
select index_name, column_name, column_position,
rank() over (partition by table_name order by column_position) rnk,
dense_rank() over (partition by table_name order by column_position) drnk,
row_number() over (partition by table_name order by column_position) rn
from all_ind_columns
where index_owner = 'SYSMAN'
and table_name = 'MGMT_JOB_EXECUTION';
Поскольку аналитика работает с выбранными строками, вам все еще нужен подзапрос / встроенное представление, чтобы отфильтровать те, которые вам не нужны. В этом примере INDEX_NAME является общим идентификатором
select index_name, column_name
from
(select index_name, column_name, column_position,
row_number() over (partition by index_name order by column_position) rn
from all_ind_columns
where index_owner = 'SYSMAN'
and table_name = 'MGMT_JOB_EXECUTION')
where rn = 1;