Обратите внимание, что Oracle DECODE обрабатывает значение null как равное нулю, а CASE (и любые другие сравнения) - нет.
Пример: Decode (a, b, 1,0) вернет 1, если a и b равны нулю.
Просто запустите эти 2 оператора, чтобы увидеть разницу.
select case null when null then 'Y' else 'N' end dd from dual;
select decode(null, null, 'Y', 'N') dd from dual;