«Не работает» - не очень полезное описание вашей проблемы.Я предполагаю, что вы получили «ORA-01722: неверный номер», потому что NVL( B.value, '-' )
попытается привести второй аргумент к тому же типу данных, что и первый, и вы не можете привести «-» к числу.Но если вы заключите первый аргумент в TO_CHAR
, он будет работать следующим образом:
SELECT A.ID, NVL( TO_CHAR( B.VALUE ), '-' ) FROM TableA A LEFT JOIN TableB B ON A.ID = B.ID;
SQL Fiddle пример