Вы можете справиться с этим, используя substring
и row_number
Выберите запрос
вы хотите вывод, как показано ниже Visit_U_1,Visit_U_2, Visit_U_3
Поэтому я удаляю последнюю цифруиз столбца Vist и добавил его с помощью номера.Это делается с помощью функций Sunstring
и row_number()
.Преобразуйте номер строки в nvarchar
, чтобы устранить полученную ошибку.
substring(VisitNumber,0,len(VisitNumber)-1) + convert(nvarchar(50), row_number()over (partition by BuildingID order by BuildingID) ) visit_new
-
SELECT BuildingId,VisitNumber,Id,TasksId,Status,GregorianDate,row_number()over (partition by BuildingID order by BuildingID)srno,
substring(VisitNumber,0,len(VisitNumber)-1) + row_number()over (partition by BuildingID order by BuildingID) visit_new
FROM Visit
where status=5
and BuildingId in (7,8,9,10)
Group by BuildingId,Id,TasksId,Status,VisitNumber,GregorianDate
order by BuildingId,GregorianDate asc
Запрос на обновление
Update Visit
set Visit.VisitNumber = a.visit_new
FROM Visit
inner join (
SELECT BuildingId,VisitNumber,Id,TasksId,Status,GregorianDate,row_number()over (partition by BuildingID order by GregorianDate )srno,
substring(VisitNumber,0,len(VisitNumber)-1) + convert(nvarchar(50), row_number()over (partition by BuildingID order by GregorianDate) )
FROM Visit
where status=5
and BuildingId in (7,8,9,10)
) a on a.status = Visit.status and a.BuildingId = visit.BuildingId
where status=5
and BuildingId in (7,8,9,10)
Проверьте этот код перед обновлением данных в реальном времени.