Дублирование записей для заполнения пробела между датами

Мне нужно сделать кое-что действительно странное, а именно создать поддельные записи в представлении , чтобы заполнить пробел между опубликованными датами цены на продукцию.

На самом деле мой сценарий немного сложнее, но я упростил его до продуктов/дат/цен.

Допустим, у нас есть эта таблица:

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                     

Предположим, что сегодня 21 апреля 2012 года, мне нужно представление , которое будет повторять каждую цену каждую дня до объявления новой цены. Вот так:

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 Analytics, но я не знаком с этим. Я пытался прочитать это http://www.club-oracle.com/articles/analytic-functions-i-introduction-164/, но совсем не понял.

8
задан Bonifacio2 10 February 2015 в 13:28
поделиться