Предполагая две таблицы source
и target
:
create table source (
id integer generated by default as identity constraint pk_source primary key,
item_type integer not null,
amount integer not null
);
create table target (
id integer generated by default as identity constraint pk_target primary key,
item_type integer not null,
amount integer not null
);
Где source
заполняется как:
insert into source (item_type, amount) values (1, 5);
insert into source (item_type, amount) values (2, 1);
insert into source (item_type, amount) values (3, 2);
Затем вы можете скопировать эти записи в target
с анонимной процедурой (execute block
):
execute block
as
declare item_type type of column source.item_type;
declare amount type of column source.amount;
begin
for select item_type, amount from source into item_type, amount do
begin
while (amount > 0) do
begin
insert into target (item_type, amount) values (:item_type, 1);
amount = amount - 1;
end
end
end
Копирует запись из source
в target
(amount
) раз.
Смотрите также это dbfiddle .