私はテーブルを持っています:
CREATE TABLE ProductPrice
(
ProductId INT NOT NULL,
EffectiveDt DATE NOT NULL,
InactiveDt DATE NOT NULL,
Price DECIMAL(10,2) NOT NULL
)
私がやりたいことは、更新を使用して、最も低い effectivedt を持つレコードの inactivedt が、各製品 ID の次に低い effectivedt を持つレコードの effectivedt - 1 に変更されるようにすることです。
だから私たちが持っているとしましょう:
21/07/2012 26/07/2012
24/07/2012 28/07/2012
27/07/2012 30/07/2012
これは次のように変更されます。
21/07/2012 23/07/2012
24/07/2012 26/07/2012
27/07/2012 30/07/2012
これまでのところ、私は持っています:
UPDATE pp
SET pp.InactiveDt = (SELECT pe.EffectiveDt
FROM ProductPrice pe
WHERE pe.ProductId = pp.ProductId
)
FROM ProductPrice pp;
しかし、これは私が必要とすることを実際には行いません。