Olá.

Não deve ser é a melhor solução, mas...

UPDATE test A set j = j + (select max(B.j) from test B where B.J < A.J ) where A.j > (select min(C.j) from test C);

Espero ter ajudado.

paulo matadr escreveu:

create table test(i number , j number);
insert into test values(1,2)
insert into test values(1,3)
insert into test values(1,4)

select * from test;
         I          J
---------- ----------
         1          2
         1          3
         1          4
minha intenção:

depois do  update
select * from test;
         I          J
---------- ----------
         1          2
         1          3+2  
         1          4+3
depois do  update
select * from test;
         I          J
----------
 ----------
         1          2
         1          5+2
         1          7+5

Pra oracle 
update test x
set x.j = x.j + (select lag_j
from (select i, j, nvl(lag(j) over (order by i,j) ,0) as lag_j
from test) y
where x.i = y.i and x.j = y.j)

como eu faço isso pra postgres?
Agradeço desde ja
  
 
Paulo


 

_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


-- 
                                                                  Danilo Pacheco Martins
                                                                  InfoCont Sistemas Integrados Ltda.
                                                                  Diretor
                                                                  Fone: (47) 3422-3536
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a