我面臨嚴峻的形勢。到目前爲止我找不到解決方案。如何將日期範圍錶轉換爲基於行的視圖?
我有一張表格給出了基於日期範圍的信息。我希望按日期分解這些信息。所以我正在尋求將範圍轉換爲行結構。
額外的困難是日期範圍中「句點」的數量是可變的。 「週期」由日期範圍和一個週期內的天數進行扣除。
更具體地,上表中的一個線我已經一個
- ID
- 範圍的起始日期
- END_DATE範圍
- 數days_in_the_period的
- numbers_periods
- 適用於範圍中的每個期間的價格
這裏是初始表的結構和預期的結果:
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-0 1 00:00:00.0000000 800,87 30
... ... ... ...
010-1280001 2008-04-01 00:00:00.0000000 281,81 60
010-1280001 2008-06-01 00:00:00.0000000 281,81 60
... ... ... ...
010-1280001 2019年8月1日00:00:00.0000000 372,96 0
的信息,初始表包含約10萬條記錄。 有沒有人對我有一個好主意?
請恢復任何澄清, Tartino。
這是一個很好的開始。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –
你能解釋關於開始和結束日期如何變成單一日期的邏輯預期結果中的列? –
親愛的Kannan,範圍的開始日期成爲單日期中的第一個日期。然後根據該期間的天數計算第二個單一日期。(30天將四捨五入爲一個月) 它繼續有多少次(有或沒有結束日期) – Tartino