Настройка:
create table refs
(reference int
,dates date
,uid varchar(10) NULL
)
go
set nocount on
go
insert refs (reference,dates) values (123,'01/01/2020')
insert refs (reference,dates) values (123,'01/02/2020')
insert refs (reference,dates) values (123,'01/03/2020')
insert refs (reference,dates) values (123,'01/04/2020')
insert refs (reference,dates) values (456,'01/01/2020')
insert refs (reference,dates) values (456,'01/02/2020')
insert refs (reference,dates) values (456,'01/03/2020')
insert refs (reference,dates) values (789,'01/01/2020')
insert refs (reference,dates) values (789,'01/02/2020')
insert refs (reference,dates) values (789,'01/03/2020')
insert refs (reference,dates) values (789,'01/04/2020')
insert refs (reference,dates) values (789,'01/05/2020')
go
Обновление:
Уникальная / цифра c часть идентификатора пользователя определяется путем поиска счетчик количества строк с тем же значением references
и dates
меньше, чем столбец dates
текущей строки, а затем +1
для нашего окончательного значения:
update refs
set uid = convert(varchar(10),reference) + '_' +
convert(varchar(10), (select count(*) + 1
from refs r2
where r2.reference = r1.reference
and r2.dates < r1.dates)
)
from refs r1
go
Результаты:
select reference,convert(varchar(10),dates,101) as dates, uid
from refs
order by reference,dates
go
reference dates uid
----------- ---------- ----------
123 01/01/2020 123_1
123 01/02/2020 123_2
123 01/03/2020 123_3
123 01/04/2020 123_4
456 01/01/2020 456_1
456 01/02/2020 456_2
456 01/03/2020 456_3
789 01/01/2020 789_1
789 01/02/2020 789_2
789 01/03/2020 789_3
789 01/04/2020 789_4
789 01/05/2020 789_5
Выше было проверено на ASE 15.7 SP138.