Q:

Как в запросе получить нумерацию, чтобы все повторяющиеся позиции нумеровалась одинаково?

Как получить такую нумерацию строк, как в столбце necessary result?
Надо, чтобы все повторяющиеся позиции, нумеровалась одинаково.
WITH IDLE AS (
SELECT '1' AS ID, 'OTHER' AS idle, '1' AS "necessary result" FROM dual union all
SELECT '2',       'ППР',           '2'                       FROM dual union all
SELECT '3',       'OTHER',         '3'                       FROM dual union all
SELECT '4',       'ППР',           '4'                       FROM dual union all
SELECT '5',       'ППР',           '4'                       FROM dual union all
SELECT '6',       'OTHER',         '5'                       FROM dual union all
SELECT '7',       'ППР',           '6'                       FROM dual union all
SELECT '8',       'ППР',           '6'                       FROM dual union all
SELECT '9',       'ППР',           '6'                       FROM dual union all
SELECT '10',      'OTHER',         '7'                       FROM dual 
)
SELECT IDLE.*  FROM IDLE

A:

Посчитайте накапливающуюся сумму (т.н. running total) только по изменениям в столбце IDLE.
В этом поможет конструкция sum(...) over (order by ...), вот так:
with idle as (
    select '1' as id, 'OTHER' as idle, '1' as necessary_result   from dual union all
    select '2',       'ППР',           '2'                       from dual union all
    select '3',       'OTHER',         '3'                       from dual union all
    select '4',       'ППР',           '4'                       from dual union all
    select '5',       'ППР',           '4'                       from dual union all
    select '6',       'OTHER',         '5'                       from dual union all
    select '7',       'ППР',           '6'                       from dual union all
    select '8',       'ППР',           '6'                       from dual union all
    select '9',       'ППР',           '6'                       from dual union all
    select '10',      'OTHER',         '7'                       from dual 
)
select q2.id, idle, necessary_result, to_char (sum (chng) over (order by num)) result
from (
    select q1.*, case when prev = idle then 0 else 1 end chng 
    from (
        select idle.*, to_number (id) num, lag (idle) over (order by to_number (id)) prev 
        from idle
    ) q1
) q2    
order by num;

Выведет:
ID IDLE   necessary_result result          
-- ------ ---------------- ----------------
1  OTHER  1                1               
2  ППР    2                2               
3  OTHER  3                3               
4  ППР    4                4               
5  ППР    4                4               
6  OTHER  5                5               
7  ППР    6                6               
8  ППР    6                6               
9  ППР    6                6               
10 OTHER  7                7               

