厳しい状況に直面しています。これまでのところ解決策を見つけることができませんでした。
日付範囲に基づいて情報を提供するテーブルがあります。この情報を日付ごとに分類したいと思います。だから私は範囲を行構造に変換しようとしています。
さらに難しいのは、日付範囲の「期間」の数が可変であることです。 「周期性」は、日付範囲と 1 つの期間の日数によって差し引かれます。
より具体的には、テーブルの 1 行に
- ID
- 範囲の start_date
- 範囲の end_date
- 期間中の日数
- 数字_期間
- 範囲内の各期間に適用される価格設定
最初のテーブル構造と期待される結果は次のとおりです。
CREATE TABLE Start(
Key VARCHAR(11) NOT NULL PRIMARY KEY
,Start_date VARCHAR(27) NOT NULL
,End_Date VARCHAR(27) NOT NULL
,Days_in_the_period INTEGER NOT NULL
,Nbr_periods INTEGER NOT NULL
,Pricing VARCHAR(6) NOT NULL
);
INSERT INTO Start(Key,Start_date,End_Date,Days_in_the_period,Nbr_periods,Pricing) VALUES ('010-1280001','2000-06-01 00:00:00.0000000','2001-12-01 00:00:00.0000000',30,19,'800,87');
INSERT INTO Start(Key,Start_date,End_Date,Days_in_the_period,Nbr_periods,Pricing) VALUES ('010-1280001','2002-01-01 00:00:00.0000000','2005-12-01 00:00:00.0000000',30,48,'440,32');
INSERT INTO Start(Key,Start_date,End_Date,Days_in_the_period,Nbr_periods,Pricing) VALUES ('010-1280001','2006-01-01 00:00:00.0000000','2007-02-01 00:00:00.0000000',30,14,'282,68');
INSERT INTO Start(Key,Start_date,End_Date,Days_in_the_period,Nbr_periods,Pricing) VALUES ('010-1280001','2007-03-01 00:00:00.0000000','2008-03-01 00:00:00.0000000',30,13,'283,99');
INSERT INTO Start(Key,Start_date,End_Date,Days_in_the_period,Nbr_periods,Pricing) VALUES ('010-1280001','2008-04-01 00:00:00.0000000','2009-01-01 00:00:00.0000000',60,5,'281,81');
INSERT INTO Start(Key,Start_date,End_Date,Days_in_the_period,Nbr_periods,Pricing) VALUES ('010-1280001','2009-02-01 00:00:00.0000000','2009-03-01 00:00:00.0000000',30,2,'281,81');
INSERT INTO Start(Key,Start_date,End_Date,Days_in_the_period,Nbr_periods,Pricing) VALUES ('010-1280001','2009-04-01 00:00:00.0000000','2019-07-01 00:00:00.0000000',30,124,'281,81');
INSERT INTO Start(Key,Start_date,End_Date,Days_in_the_period,Nbr_periods,Pricing) VALUES ('010-1280001','2019-08-01 00:00:00.0000000','2019-08-01 00:00:00.0000000',0,1,'372,96');
期待される
Key Date Pricing Days_in_the_period
010-1280001 2000-06-01 00:00:00.0000000 800,87 30
010-1280001 2000-07-01 00:00:00.0000000 800,87 30
… … … …<br> 010-1280001 8-0 200 :00:00.0000000 281,81 60
010-1280001 2008-06-01 00:00:00.0000000 281,81 60
… … … …<br> 010-1280001 2019-08-01 00:00:00.0002,906 3
参考までに、最初のテーブルには約 100k レコードが含まれています。誰かが私に素晴らしいアイデアを持っていますか?
明確にするために元に戻してください、タルティーノ。