Это решение также будет работать, если вы используете старую версию mssql
--Test table:
DECLARE @t table(Unique_ID int, Group_ID int, New_ID int)
--Test data:
INSERT @t (unique_id, group_id)
SELECT 1, 1123 UNION ALL SELECT 2, 1123 UNION ALL SELECT 3, 1124 UNION ALL SELECT 4, 1125 UNION ALL SELECT 5, 1125 UNION ALL SELECT 6, 1125 UNION ALL SELECT 7, 1125
--Syntax:
UPDATE t
SET new_id =
(SELECT count(*)
FROM @t
WHERE t.unique_id >= unique_id and t.group_id = group_id
GROUP BY group_id)
FROM @t t
--Result:
SELECT * FROM @t
Unique_ID Group_ID New_ID
----------- ----------- -----------
1 1123 1
2 1123 2
3 1124 1
4 1125 1
5 1125 2
6 1125 3
7 1125 4