Mirate este ejemplo
http://www.techonthenet.com/oracle/functions/decode.php
Abajo de la sentencia con decode, muestran en terminos de programación cual sería el equivalente.
En este caso, la función
sign retorna un -1 si el parámetro de entrada es un numero negativo. por eso, si la resta da negativo, sign retorna un -1 que es comparado por el decode y pone en el campo lo que se requiere.
Para tu ejemplo:
Código SQL:
Ver originalSQL> SELECT DECODE(SIGN(30-25),-1,'MENORES','MAYORES') FROM DUAL;
DECODE(
-------
MAYORES
SQL> SELECT DECODE(SIGN(20-25),-1,'MENORES','MAYORES') FROM DUAL;
DECODE(
-------
MENORES
En el primer caso, como 30 - 25 es un numero positivo, el retorno es 1 (No -1) y se va para el "ELSE" que es mayores.
En el otro caso, como el retorno de sign es -1, pone menores y en palabras de programación, entraría por el IF.
se entiende?
saludos