Há uma grande diferença entre
DECODE e CASE e tem a ver com como NULLs são comparados. DECODE retornará "true" se você comparar NULL para NULL . CASE não vou. Por exemplo:DECODE(NULL, NULL, 1, 0)
retornará '1'.
CASE NULL
WHEN NULL THEN 1
ELSE 0
END
retornará '0'. Você teria que escrevê-lo como:
CASE
WHEN NULL IS NULL THEN 1
ELSE 0
END