Hay una gran diferencia entre DECODE
y CASE
y tiene que ver con cómo NULLs
se comparan. DECODE
devolverá "verdadero" si compara NULL
a NULL
. CASE
no lo haré Por ejemplo:
DECODE(NULL, NULL, 1, 0)
devolverá '1'.
CASE NULL
WHEN NULL THEN 1
ELSE 0
END
devolverá '0'. Tendrías que escribirlo como:
CASE
WHEN NULL IS NULL THEN 1
ELSE 0
END