Consulta sobre código para incrementar valores de la base de datos oracle

Como hago una sentencia para oracle que diga:
si (clave_operación= 10 y Código_tipomensaje = 0210) es cierto entonces suma el campo cantidad_balance,
el valor que me interesa es la suma de las transacciones con estas condiciones.
Todos estos campos(clave_operacion, codigo_tipomensaje y cantidad balance) están en una tabla llamada transacciones, mi duda es hay algún if en pl-sql o esto se puede hacer con el decode.

1 Respuesta

Respuesta
1
Si querés solo la suma de cantidad_balance para todos los registros con clave_operacion = 10 y codigo_tipomensaje = 0210
podés hacerlo simplmente con un select sum(cantidad_balance) into var_lo_que_quieras  from transacciones where clave_operacion = 10 and codigo_tipomensaje = '0210';
También se podría hacer un cursor sobre la tabla y realizar un for, colocando un totalizador dentro de un if.
Y si por alguna razón quisieras hacer una suma con esas condiciones y no pudieras ponerlas en el where, se puede usar un decode anidado:
select sum(decode(clave_operacion,10,decode(codigo_tipomensaje,'0210',cantidad_balance,0),0)) into var_lo_que_quieras from transacciones;
Obviamente esto es menos eficiente que el primer sum() porque se recorre toda la tabla.
Hola muchas gracias tu sugerencia es interesante y la voy a probar, la cuestión es que en este momento la solución que requería dependía de un sql sencillo un select, por lo que la to_char(decode(campo1!campo2,'datos a validar'), sum(campo3), 0)
! Es barrita pero en ese teclado no lo encontré.
SaLuDoS

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas