次の表とデータが与えられます。
create table prices
(productKey int
,PriceType char(10)
,BeginDate date
,EndDate date
,price decimal(18,2))
insert into prices(productKey, PriceType,BeginDate,EndDate, price)
values
(1,'LIST','1-1-2010','1-15-2010',10),
(1,'LIST','1-16-2010','10-15-2010',20),
(1,'DISCOUNT','1-10-2010','1-15-2010',-5),
(2,'LIST','2-1-2010','10-15-2010',30),
(2,'LIST','10-16-2010','1-1-9999',35),
(2,'DISCOUNT','2-10-2010','10-25-2010',-10),
(2,'LIST','1-1-2010','1-15-2010',10),
(3,'DISCOUNT','1-12-2010','1-1-9999',-5),
(3,'LIST','1-16-2010','1-1-9999',10)
各期間の実際の価格 (リスト割引) を計算する同じテーブルにレコードを挿入する必要があります。
たとえば、製品 1 の場合、次の「ACTUAL」レコードが必要です。
Begin End Price
1-1-2010 1-9-2010 10
1-10-2010 1-15-2010 5
1-16-2010 10-15-2010 20
定価範囲内で割引が開始されるものについては、ある程度把握していますが、それ以外については途方に暮れています。
助けてくれてありがとう
編集
プロダクト キーごとに複数の割引が適用される場合がありますが、割引期間が重複することはありません。したがって、2010 年に 1 つ、2012 年にもう 1 つ作成できますが、2010 年に 2 つ作成することはできません。
また、もっといいタイトルを思いつく人がいたらお願いします。私のかわいそうな脳は、この時点で完全に挑戦されています.
EDIT2
SQL サーバー 2008R2 です。美しいセットベースの回答(またはその方向への出発点を与えてくれる人)が欲しいのですが、機能するカーソルソリューションにも同じくらい満足しています。