Как создать таблицу зависит от значений из другой таблицы и зависит от этих значений SQL - PullRequest
0 голосов
/ 26 июня 2018

Как и в заголовке, я ищу способ создать новую таблицу. В таблице будет таблица контрактов за месяц

create table NR1
(
  id         INTEGER not null,
  price      INTEGER,
  price2     INTEGER,
  start_date DATE,
  end_date   DATE,
  duration   NUMBER
)

в зависимости от продолжительности, я хочу разрезать всю дату от start_date до end_date на маленькие кусочки месяца и поместить ее в строку, например, если одна строка с продолжительностью 5 и датой начала 2018-05-01, тогда я хочу есть в новой таблице 5 строк с каждым месяцем, поэтому 2018-05-01, 2018-06-01, ..., 2018-10-01.

Можете ли вы сказать мне, что я должен использовать, чтобы решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы можете создать вид, подобный этому.

Примеры строк

INSERT INTO NR1 (id,price,price2,start_date,end_date,duration) VALUES ( 1,20,40,DATE '2018-05-01',NULL, 5);
INSERT INTO NR1 (id,price,price2,start_date,end_date,duration) VALUES ( 2,30,60,DATE '2018-02-01',NULL, 6);

View

CREATE OR REPLACE VIEW v_NR1 AS
SELECT id,price,price2,
    add_months(start_date,level - 1) AS start_date,
    last_day(add_months(start_date,level - 1) ) AS end_date
FROM
    nr1
CONNECT BY level <= duration
           AND PRIOR id = id
           AND PRIOR sys_guid() IS NOT NULL;

Демо

0 голосов
/ 26 июня 2018

Для решения этой проблемы вы можете создать триггер на своей таблице и ссылаться на поля таблицы с учетом ваших требований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...