Я пытаюсь обновить таблицу значениями из объединения. Тем не менее, выполнение этого дает мне 0 обновленных строк. При замене оператора update на select я получаю объединение в 1 строку.
Ниже я просто пытаюсь достичь на работе. Получите ID $ дочерней политики, который связан со следующей политикой (они не связаны и зависят от дат. Они связаны через rgnID) и обновите временную таблицу. Я изменил ниже только для симуляции.
create table tTB1 (plcyID int, rgnID int, ncptdt datetime, plctypID int)
insert into tTB1 (plcyID , rgnID , ncptdt , plctypID)
values (1,1,'2017-10-01',1),(2,1,'2018-10-01',2),
(3,1,'2018-10-01',3),(4,1,'2019-10-01',2)
--create table #tTEMP (total int, plcyID int, rgnID int, ncptdt datetime, plctypID int)
--select * from tTB1
;WITH cteLYPolicy
AS
(
select p.rgnID,MXPLCY=MAX(p.plcyID)
FROM tTB1 t
INNER JOIN tTB1 p ON p.rgnID=t.rgnID and p.ncptdt<t.ncptdt and p.plcyID<t.plcyID and p.plctypID in (1,2)
WHERE t.plctypID=2
GROUP BY p.rgnID
)
--UPDATE l
--set l.plctypID = 10--p.plctypID
select *
from cteLYPolicy cte
inner join tTB1 l ON l.plcyID =cte.MXPLCY --ly
inner join tTB1 p ON p.rgnID=l.rgnID and p.ncptdt>l.ncptdt and p.ncptdt = DATEADD(year,1,l.ncptdt)