SQL-запросы представляют неупорядоченные наборы.Таким образом, различие между двумя группами для 47641. не определено.
Вы можете определить запрос, который назначит группу, которая имеет ровно один fiberid
для каждого scname
.Когда есть кратные значения, назначение является произвольным.
Для этого вы можете использовать dense_rank()
:
select t.*,
(dense_rank() over (order by scname) - 1 +
row_number() over (partition by scname, fiberid order by fiberid)
) as grp
from t;
Если у вас есть порядок для строк, то более стабильное назначениеможно рассчитать.