我不确定该怎么做。我有一个关系数据库,信息也刚刚迁移。由于架构已从旧数据库更改,因此正确传输数据大约需要3周时间。在此期间,旧的生产数据库仍在使用。我没有传输剩余的数据,但是第二次迁移只是将新行插入到名为tVehicleDeal的主表中,并将新值插入到名为tVehicleLog的日志表中。我的问题是..如何根据tVehicleLog中的最后一个条目更新tVehicleDeal?我的想法是,由于最新的日志被插入到tVehicleLog表中,那么这应该是最新的条目,我可以使用该条目来更新tVehicleDeal。我知道我可以做类似的事情,但不知道如何获得最后一笔交易。
UPDATE dbo.tVehicleDeal
SET InternalLocationID = l.InternalLocationID
FROM dbo.tVehicleLog l
WHERE l.DealID = tVehicleDeal.DealID
有没有办法正确地做到这一点?任何建议都有帮助!
答案 0 :(得分:2)
您可以使用row_number()
和join
:
update vd
set InternalLocationID = l.InternalLocationID
from tVehicleDeal vd join
(select vl.*,
row_number() over (partition by l.DealId order by DATETIME desc) as seqnum
from dbo.tVehicleLog l
) l
on l.DealID = tVehicleDeal.DealID and seqnum = 1;