我需要做的事情很奇怪,這是在一個視圖創造有虛假記載填寫產品價格的發佈日期之間的差距之間的差距。其實,我的場景比這個稍微複雜一些,但我簡化爲產品/日期/價格。複製記錄填寫日期
比方說,我們有這個表:
create table PRICES_TEST
(
PRICE_DATE date not null,
PRODUCT varchar2(13) not null,
PRICE number
);
alter table PRICES_TEST
add constraint PRICES_TEST_PK
primary key (PRICE_DATE, PRODUCT);
有了這些記錄:
insert into PRICES_TEST values (date'2012-04-15', 'Screw Driver', 13);
insert into PRICES_TEST values (date'2012-04-18', 'Screw Driver', 15);
insert into PRICES_TEST values (date'2012-04-13', 'Hammer', 10);
insert into PRICES_TEST values (date'2012-04-16', 'Hammer', 15);
insert into PRICES_TEST values (date'2012-04-19', 'Hammer', 17);
選擇記錄將返回我:
PRICE_DATE PRODUCT PRICE
------------------------- ------------- ----------------------
13-Apr-2012 00:00:00 Hammer 10
16-Apr-2012 00:00:00 Hammer 15
19-Apr-2012 00:00:00 Hammer 17
15-Apr-2012 00:00:00 Screw Driver 13
18-Apr-2012 00:00:00 Screw Driver 15
今天假設是2012年4月21日,我需要查看,它應該每天重複每個價格聯合國直到發佈新的價格。像這樣:
PRICE_DATE PRODUCT PRICE
------------------------- ------------- ----------------------
13-Apr-2012 00:00:00 Hammer 10
14-Apr-2012 00:00:00 Hammer 10
15-Apr-2012 00:00:00 Hammer 10
16-Apr-2012 00:00:00 Hammer 15
17-Apr-2012 00:00:00 Hammer 15
18-Apr-2012 00:00:00 Hammer 15
19-Apr-2012 00:00:00 Hammer 17
20-Apr-2012 00:00:00 Hammer 17
21-Apr-2012 00:00:00 Hammer 17
15-Apr-2012 00:00:00 Screw Driver 13
16-Apr-2012 00:00:00 Screw Driver 13
17-Apr-2012 00:00:00 Screw Driver 13
18-Apr-2012 00:00:00 Screw Driver 15
19-Apr-2012 00:00:00 Screw Driver 15
20-Apr-2012 00:00:00 Screw Driver 15
21-Apr-2012 00:00:00 Screw Driver 15
任何想法如何做到這一點?我不能真的使用其他輔助表,觸發器也沒有PL/SQL編程,我真的需要這樣做,使用一個視圖。
我認爲這可以使用oracle分析來完成,但我並不熟悉這一點。我試圖讀這http://www.club-oracle.com/articles/analytic-functions-i-introduction-164/,但我沒有得到它。
NVM,我現在明白了吧:)這將有可能產生與創造性地使用'Dual'表的數據。 – mellamokb 2012-04-20 23:46:24
我可以假設oracle分析具有它自己的日期維度表來執行此功能。你可以創建自己的日期維度表嗎? – 2012-04-20 23:53:01
這裏是創造TSQL動態calandar視圖一篇有趣的文章(是的,你要預言,但也許它可以改變):http://sqlserverpedia.com/blog/sql-server-bloggers/tsql-tuesday-18-使用-A-遞歸CTE到創建-A-日曆表/ – 2012-04-20 23:58:00