Один из способов сделать это - создать другую таблицу и вставить пустые строки, основанные на вашей строке num, а затем перекрестно соединиться с ней .. что-то вроде этого
DECLARE @Numbers TABLE
(
Number INT IDENTITY(1,1) PRIMARY KEY CLUSTERED
)
declare @table_test table
(
ID varchar(10),
DT datetime,
mins int,
num int
)
insert into @table_test
select 'PR0006',getdate(), 30, 3
--select * from @table_test
WHILE COALESCE(SCOPE_IDENTITY(), 0) < (select num from @table_test)
BEGIN
INSERT @Numbers DEFAULT VALUES
END
;with mycte as (
SELECT
Number
, ID
, DT
,mins
,num
,sum(mins) over( order by DT ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as running_mins
FROM @Numbers
cross join @table_test
)
Select *
, dateadd(MINUTE,running_mins-mins,DT)as New_DT
from mycte
теперь вам просто нужно выяснить, как увеличить ID на основе столбца Number ..
Не ясно, является ли PR всегда префиксом или сколько чисел следует за PR ... но вы должны быть в состоянии понять это.
но вот ссылка, которая показывает вам, как:
Инкремент varchar в SQL