我正在尝试用联接中的值更新表。但是,运行此命令会更新0行。当用select替换update语句时,我得到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)