Полагаю, вы хотите использовать необычные функции управления окнами, доступные в SQL Server 2012+. В частности, ROW_NUMBER
UPDATE
T
SET
FileSequenceNumber = ROW_NUMBER() OVER (PARTITION BY T.Tag ORDER BY RowID)
FROM
dbo.myTable AS T;
partition by
сбрасывает счетчик каждый раз, когда меняется тег
order by
указывает, как следует генерировать последовательность внутри тега column.
Как отмечено в комментарии, оконные функции могут появляться только в предложении select или oder by, поэтому мы должны изменить их, чтобы они соответствовали критериям. DBFiddle для рабочего репро https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=d731c14c9e15d70eb3b1d34f7b0f61a8
UPDATE
T
SET
T.FileSequenceNumber = TI.FileSequenceNumber
FROM
dbo.SO_61461648 AS T
INNER JOIN
(
SELECT
FileSequenceNumber = ROW_NUMBER() OVER (PARTITION BY TI.Tag ORDER BY TI.RowID)
, TI.RowID
FROM
dbo.SO_61461648 AS TI
) aS TI
ON TI.RowID = T.RowID;
В случае, если предоставленные данные были точными и 4 строки с одинаковым RowID, вам понадобится тяжелый Вручите подход, сбросьте стол и перезагрузите его.
-- Heavy handed approach to dump the table and reload with new value in case RowID is not unique
declare @Intermediary table
(
RowID int NOT NULL
, Tag varchar(30) NOT NULL
);
DELETE T
OUTPUT DELETED.RowID, DELETED.Tag
INTO @intermediary(RowID, Tag)
FROM
dbo.SO_61461648 AS T;
INSERT INTO
dbo.SO_61461648
SELECT
D.*
, ROW_NUMBER() OVER (PARTITION BY D.Tag ORDER BY D.RowID)
FROM @Intermediary AS D;
SELECT * FROM dbo.SO_61461648 AS T order by RowID, FileSequenceNumber;