各レコードに、、、および列があるテーブルが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
)
;
しかし、これはうまくいきません。何か案は?