Большинство СУБД имеет функцию row_number()
, поэтому я бы использовал ее:
select t.*, row_number() over (partition by name order by ?) as seq
from table t;
Если СУБД не имеет функции row_number()
, то вы можете использовать подзапрос:
select t.*, ( select count(*)
from table t1
where t1.name = t.name and t1.pk <= ?
) as seq
from table t;
?
указывает ваш столбец pk
(primary key
), который имеет уникальное уникальное значение по всей таблице, которое определяет порядок столбцов.