como hacer un update con un inner join y un case en oracle

时间:2018-05-21 23:17:02

标签: plsql

没有大豆muy bueno en pl / sql y estoy practicando,y quiero hacer lo siguiente: tengo las tablas

tasas( pk_id_tasa int, monto decimal(9,2) );

salarios( id_salario int, anios int, saldo decimal(9,2), fk_id_tasa int );

y quiero hacer un update para cambiar el monto de una tasa si,esta tiene mas de3añosponerlaen 1.2 y si tiene5añosponerlaen 3.2,he pensado que deberia hacer un inner join porque tengo el monto en una tabla ylosañosenotra e incluir un case para validarlosaños,y realizado algo asi,pero ah no funciona

update tasas ts inner join salarios sl on ts.pk_tasa=s.fk_tasa
set ts.monto=case
 when (sl.anios=3) then 1.2
 when (sl.anios=5) then 5.2
 else ts.monto
 end;

o algo que me recomienden para lograr mi objtivo por favor。

saludos ..

1 个答案:

答案 0 :(得分:0)

这样的事情有帮助吗?

update tasas ts set
  ts.monto = (select case when sl.anios = 3 then 1.2
                          when sl.anios = 5 then 5.2
                          else ts.monto
                     end
              from salarios sl
              where sl.fk_tasa = ts.pk_tasa
             );