Хотя это не написано в документации, но объединение работает на совместимых типах данных. Невозможно сравнить целое число и varchar.
Ошибка становится более очевидной, если вместо значений в жестком коде указать имя столбца. Попробуйте выполнить это:
select coalesce(integer_column, varchar_column) from a_table;
Вы получите сообщение об ошибке, говорящее что-то вроде этого:
типы слияния integer и varchar не могут быть сопоставлены.