我有一个表,其中每条记录都有一个Value
,一个VersionEffective
和一个VersionExpiration
列。目前,该VersionEffective
列已正确填写,但该VersionExpiration
列默认为'9999-12-31'
. 对于具有相同值的记录,只有最新的记录VersionEffective
不应该过期。其余的应该是。具体来说,当插入新记录时,如果之前有一条具有相同值的活动记录,则该记录将过期,其VersionExpiration
等效于新记录的VersionEffective
. VersionEffective
我有一个存储过程可以在插入/时正确设置VersionExpiration
它们,但我需要返回并追溯更新VersionExpiration
旧记录的字段。
我目前的想法类似于以下内容:
UPDATE fubarTable as t
SET t.VersionExpiration = (
SELECT TOP 1 VersionEffective
FROM fubarTable as f
WHERE t.Value = f.Value
ORDER BY VersionEffective DESC
)
;
但是,这行不通。有任何想法吗?