Подзапрос может иметь нулевое значение, что не соответствует условию not in.
Используйте coalesce для замены нуля на соответствующее значение, основанное на ваших данных. Я использовал символ ~ вместо нуля
SELECT *
FROM table_a
WHERE col_a||col_b NOT IN
(
SELECT coalesce (col_a,'~')||coalesce (col_b , '~')
from table_b
);