es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reescribe la lógica de “if” a una instrucción “DECODE” en Informatica.

Tengo una lógica que necesito convertir en una instrucción de decodificación.

Mi lógica está abajo:

if emptr =='SBCS':

   empcd=empvar

else:

    if empcal != depcal and empid in ('SSC','HSC'):

            empcd = (emp_sal/avgsal) * empad

    elif empcal != depcal and empid not in ('SSC','HSC'):

            empcd = emp_del

    else:
            empcd = emp_dev

Intenté escribir la lógica en una expresión:

IIF ( emptr ='SBCS' , empvar , IIF(empcal != depcal,IIF(empcal != depcal and empid in ('SSC','HSC'),(emp_sal/avgsal) * empad,emp_del),emp_dev))

He escrito una lógica de DECODE, pero no estoy seguro si está correcta o incorrecta:

DECODE(TRUE,
    empid='SBCS', empvar,
    empcal != depcal and (empid = 'SSC' or empid = 'HSC'), (emp_sal/avgsal) * empad,
    empcal != depcal and (empid != 'SSC' or empid != 'HSC'), emp_del,
    emp_dev
)

Si la lógica de DECODE no está correcta, siéntase libre de compartir su lógica.

Tags:  ,

Answer

  1. Avatar for davy.ai

    La lógica de DECODE parece ser incorrecta ya que las condiciones después de la primera no son mutuamente excluyentes, y la lógica para las segunda y tercera condiciones también es incorrecta.

    Una posible declaración alternativa de decodificación podría ser:

    DECODE(emptr, 
      'SBCS', empvar,
      empcal != depcal, 
         DECODE(empid, 
           'SSC', (emp_sal/avgsal) * empad,
           'HSC', (emp_sal/avgsal) * empad,
           emp_del),
      emp_dev)
    

    Esta declaración primero verifica si emptr es igual a 'SBCS', si es así, devuelve empvar. Si no es así, verifica si empcal no es igual a depcal. Si es así, verifica si empid es 'SSC' o 'HSC'. Si es así, devuelve (emp_sal/avgsal) * empad. Si empid no coincide con ninguno de estos, devuelve emp_del. Si no se cumplen las dos primeras condiciones, simplemente devuelve emp_dev.

Comments are closed.