Oracle SQL вставка в несколько таблиц из с предложением с ограничением - PullRequest
0 голосов
/ 28 марта 2019

Я хочу вставить данные в несколько таблиц из одного набора данных запроса / ввода, извлекая различные данные с помощью предложения where.Я использую Oracle SQL Developer.

Я уже описал логику, которая не будет работать:

Insert into A (X, Y, Z)
Values(Select x, y, z From inputdata where x = 1)

Insert into B (X, Y, Z)
Values(Select x, y, z From inputdata where x = 2)

Insert into C (X, Y, Z)
Values(Select x, y, z From inputdata where x = 3)

With inputdata as (Select x, y, z From source)
Select x, y, z From inputdata

1 Ответ

0 голосов
/ 28 марта 2019

Используйте условное insert all как здесь:

create table a(x, y, z) as (select 0, 0, 0 from dual);
create table b(x, y, z) as (select 0, 0, 0 from dual);
create table c(x, y, z) as (select 0, 0, 0 from dual);

create table src(x, y, z) as (
    select 1, 1, 1 from dual union all
    select 2, 2, 2 from dual union all
    select 3, 3, 3 from dual );

insert all 
  when x = 1 then into a (x, y, z) values (x, y, z)
  when x = 2 then into b (x, y, z) values (x, y, z)
  when x = 3 then into c (x, y, z) values (x, y, z)
select * from src
...