В настоящее время я пытаюсь реализовать небольшой код, который будет принимать даты для данного списка из 160 строк и обновлять их, чтобы они были через одну минуту после другой даты из той же таблицы.
так, например, из этого пошло бы от:
> 1058841 2018-06-20 14:15:04.000 Copy of NtO produced
> 1058841 2018-06-14 19:58:03.000 NTO service date set to 24/05/2018
> 969565 2018-06-20 14:15:01.000 17530 Copy of NtO produced
> 969565 2018-06-14 19:58:03.000 148 NTO service date set to 24/05/2018
к этому:
> 1058841 2018-06-14 19:59:03.000 Copy of NtO produced
> 1058841 2018-06-14 19:58:03.000 NTO service date set to 24/05/2018
> 969565 2018-06-14 19:59:03.000 17530 Copy of NtO produced
> 969565 2018-06-14 19:58:03.000 148 NTO service date set to 24/05/2018
мой код в настоящее время выглядит следующим образом:
declare @thisdate table
(
thisdate datetime,
thisref nvarchar(50)
)
declare @thisdate2 table
(
thisdate2 datetime
)
insert into @thisdate(thisdate) (select te_date from (
select row_number() over (partition by te_system_ref order by (select 0)) as rownumber, te_date from ticket_events where te_system_ref in
(select sl_system_ref from statutory_letter where sl_letter_batch = 9429)and te_event = 'Copy of NtO produced' and te_system_ref = 969565
) t where rownumber = 1)
;
insert into @thisdate(thisref) select te_system_ref from (
select row_number() over (partition by te_system_ref order by (select 0)) as rownumber, te_system_ref from ticket_events where te_system_ref in
(select sl_system_ref from statutory_letter where sl_letter_batch = 9429)and te_event = 'Copy of NtO produced' and te_system_ref = 969565
) t where rownumber = 1
;
insert into @thisdate2(thisdate2) select te_date from (
select row_number() over (partition by te_system_ref order by (select 0)) as rownumber, te_date from ticket_events where te_system_ref in
(select sl_system_ref from statutory_letter where sl_letter_batch = 9429)and te_event like 'NTO service date set to%' and te_system_ref = 969565
) t where rownumber = 1
;
update ticket_events
set te_date = dateadd(minute,1,(select thisdate2 from @thisdate2))
where te_date in (select thisdate from @thisdate) and te_system_ref in (select thisref from @thisdate) and te_event = 'Copy of NtO produced'
Однако проблема в том, что если запрос на выборку, используемый для заполнения переменных, дает более одного результата, он больше не работает. Как бы я решил это?
И быстрый бонусный вопрос, как мне взять последнюю строку вместо первой, используя номера строк?
Любая помощь будет принята с благодарностью!