sql вопрос про insert

Bubl

Есть инсерт в табл знач (а, б, с, д)
нужно сделать так чтобы а выбиралось , те есть много а , которые по тупому вдолбить не получится, и так чтобы с пересчитывалось.
Помогите плиз? что за вид у такого инсерта?

RED-GREEN

Афтар, пиши ещо

Bubl

да ну тебя я понимаю что ничиво не понятно, но ты спроси что именно а я поясню

korsar0156

простой пример приведи

Bubl

insert into mgtar (TAR_CDFO, TAR_NOVAR, TAR_NOART, TAR_DTTR, TAR_PXB, TAR_PXBEU, TAR_CDDEVI,
TAR_HHSAISIE, TAR_DSOPER, TAR_DTSAISIE, TAR_TYTARIF, TAR_FLGENPVC) values ('981', '1', '44000863',
to_date(sysdate,'DD/MM/YYYY' '29', '1', 'RUR', to_date('01/01/0001','DD/MM/YYYY' 'CENTRALE',
to_date(sysdate,'DD/MM/YYYY' NULL, '46');
но нужно сделать так , чтобы TAR_PXB, не вставлялось руками, а считалось по формуле для всех TAR_CDFO и причем TAR_DTSAISIE должна быть макс.
помоему опять не понятно. Нет?

Bubl

те нужно вставить много строк одним инсертом, а вместо значений ставить селекты.

Bubl

мне тут подсказывают что надо цикл делать , а как его делать?

KViH

to_date(sysdate,'DD/MM/YYYY') - этим ты время округляешь до даты. если так и задумано лучше наверное писать
trunc(sysdate, 'dd')

Bubl

фиг с датой она мне ничем не мешает, нужно одним инсертов вставить много строк, как?

KViH

попробуй так:
insert into mgtar select * from mgtar

Marinavo_0507

через временную таблицу надо

Bubl

а как поясни плиз ?

Marinavo_0507

сначала во временную таблицу вставляешь без этих полей, а потом оттуда копируешь в основную, добавляя все поля, которые надо по формулам считать

Bubl

а как создать временную табл? у тебя нет примера?

Bubl

не смогу больше отв на посты . ушла домой

Marinavo_0507

> не смогу больше отв на посты .
да пожалуйста, ничего страшного

Markuss2

а какая база? в дб2 к примеру есть такое понятие, как generated поля...

GenN

насколько я понял, это оракл. страшный инсерт. как переменная может изменяться в пределах от строки до даты?
решаетсяз pl/sql. будем считать что это был цикл по i по целым числам от a до b
declare
i integer;
begin
for i in a..b loop
insert into mgtar (TAR_CDFO, TAR_NOVAR, TAR_NOART, TAR_DTTR, TAR_PXB, TAR_PXBEU, TAR_CDDEVI,
TAR_HHSAISIE, TAR_DSOPER, TAR_DTSAISIE, TAR_TYTARIF, TAR_FLGENPVC) values ('981', '1', '44000863',
to_date(sysdate,'DD/MM/YYYY' i, '1', 'RUR', to_date('01/01/0001','DD/MM/YYYY' 'CENTRALE',
to_date(sysdate,'DD/MM/YYYY' NULL, '46');
end loop;
end
ps не вставляй вместо чисел строки. приведение конечно сделает свое дело, но все-таки
возможно тебе нужен такой вариант
insert into tab1
select tab2.a*... from tab2
Оставить комментарий
Имя или ник:
Комментарий: