Я не знаю, что вы подразумеваете под "не изменять порядок", учитывая, что таблицы SQL уже представляют неупорядоченные наборы, поэтому они не имеют порядка. Вы можете назначить число каждому уникальному значению в столбце, используя dense_rank()
:
select t.*, dense_rank() over (order by data) as data_id
from t;