Мне нужно создать это задание SQL, которое выбирается из таблицы (ot) и вставляется в другую таблицу (est_Request).ReqDocNo - это столбец в таблице est_Request, в котором хранятся текущие числа.Как видно из приведенного ниже кода, он выберет максимальное число из таблицы est_Request и +1 для создания нового.На данный момент последнее число в столбце - 0000068150. Мне нужно выполнить цикл, потому что в таблицу будут вставлены тысячи записей из таблицы ot.
Но когда я пытаюсь выполнить запрос ниже, ошибка отображается как '' Не удаетсявставить строку дубликата ключа в объект «dbo.est_Request» с уникальным индексом «Request_ix1».Значение дубликата ключа: (0000068151, 20 сентября 2019, 12:00, 20 сентября 2019, 00:00).
declare @ReqDocNo nvarchar(10)
Declare reqdocno cursor for
select ReqDocNo from est_Request
open reqdocno
fetch next from reqdocno into @ReqDocNo
while @@fetch_status = 0
Begin
Select @ReqDocNo = isnull(max(ReqDocNo),0) + 1 from est_Request
select @ReqDocNo = right('0000000000' + convert(nvarchar(10),@ReqDocNo),10)
insert into est_Request
select @ReqDocNo,'',convert(date, pick_up_date, 103),convert(time,shift_time,103),convert(date,send_back_date,103),convert(time,send_back_time,103),pic,'',ext,convert(date, getdate()), convert(time, getdate()),'','','','',status
FROM ot
fetch next from reqdocno into @ReqDocNo
end
close reqdocno
deallocate reqdocno
Как этого добиться?
Редактировать:
Описание индекса для таблицы est_Request:
PK_est_Request |некластерный, уникальный первичный ключ, расположенный на PRIMARY |ReqDocNo Request_ix1 |кластерный, уникальный, расположенный на ПЕРВИЧНОМ |ReqDocNo, PickUpDate, SendBackDate
Edit2:
Мне тоже нужно вставить в другую таблицу, поэтому я попробовал использовать одно из приведенных ниже решений:
insert into est_RequestDetail
Select ReqDocNo = right('0000000000'
+ convert(varchar(10),
@ReqDocNo + row_number() over (order by ot.pick_up_date)),
10), ot.empid, RouteNo,BusStopID,'',''
from est_BusGuest , ot
where est_BusGuest.empid = ot.empid
and routeNo in (select routeno from est_busroute a, est_buszone b
where a.zoneno = b.zoneno
and b.branchid = '2')
Спасибо всем за помощь!