Это ошибка оракула или я чего-то не понимаю?
select let1, let2, nvl(let2, 'z') fn_let2
from
(select 1 num, 'a' let1 from dual) t1
left outer join (select 2 num, 'E' let2 from dual where 0=1) t2
on (t1.num = t2.num);
t1 - возвращает 1, 'a'
t2 - нет строк из-за 0 = 1
Теперь мы оставили внешнее объединение, так что мы должны получить все из t1, дополненного нулями, но не ...
Сшитое 'E' берется в результаты.
'a', 'E', 'z'
Еще смешнее, эта функция на let2 работает правильно, поэтому nvl (let2, 'z') - возвращает 'z'.
Я использую Oracle 10.2