Как сохранить вычисляемые столбцы из одной таблицы в другую, используя Oracle APEX? - PullRequest
0 голосов
/ 02 августа 2020

Как говорится в вопросе, я пытаюсь сохранить вычисленные данные, которые являются результатом оператора select, в другую таблицу. На этом изображении столбец с зеленым контуром является столбцом базы данных, а столбцы с красным контуром рассчитываются на основе этого столбца, я хочу сохранить столбцы с красным контуром в другую таблицу, где имена столбцов будут такими же .

image

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Вы можете использовать оператор INSERT INTO SELECT - множество примеров доступно в Google

  INSERT INTO another_table (
    emp_id,
    col1,
    col2
  )
    SELECT emp_id,
           calculated_col1,
           calculated_col2
      FROM first_table
0 голосов
/ 02 августа 2020

Это похоже на классический c отчет. Это? Если да, то это результат оператора select. Поскольку он вычисляет все интересующие вас значения, вы должны использовать его в операторе insert. Например, вы можете создать кнопку и создать процесс, который запускается при нажатии этой кнопки. Тогда это будет

insert into target_table (emp_id, salary, house_rent, ...)
  select emp_id, ... whatever you select in report's query
  from ...

Однако: данные меняются. Что вы будете делать, когда что-то , которое используется для вычисления этих значений, будет изменено? Вы удалите эти строки и вставите новые? Обновить существующие значения? Добавить еще одну строку?

Если вы хотите обновить существующие значения, рассмотрите возможность использования merge, поскольку он может вставлять строки (в предложении when not matched в вашем случае), как а также обновление строк (в when matched). Это будет выглядеть так:

merge into target_table t
  using (select emp_id, ... whatever you select in report's query
         from ...
        ) x
  on (t.emp_id = x.emp_id)
when matched then update set
  t.salary = x.salary,
  t.house_rent = x.house_rent, 
  ...
when not matched then insert (emp_id, salary, house_rent, ...)
  values (x.emp_id, x.salary, x.house_rent, ...);
...