РЕШЕНИЕ! : Переменная, на которую ссылается функция colaesce, должна быть вычисленной, то есть
coalesce(a_col1,'null') as coalesce(b_col1,'null')
Еще одна вещь, которую я обнаружил. Допустим, col2 это цифра c. Выше не работает, вам нужно использовать 0. Или ... более хитроумно, вы можете использовать «0», то есть
coalesce(a_col2,'0') as coalesce(b_col2,'0')
Это удобно знать, если вы хотите сгенерировать некоторый код для сравнения таблиц путем ссылки на pg_tables или svv_columns. В этом коде у меня было 2 таблицы, которые я создал, читая таблицу метаданных svv_columns, и я хотел создать оператор case для каждой переменной, поэтому у меня было бы две переменные из каждой таблицы рядом плюс переменная check, которую я Использовать для подведения итогов позже:
select ' coalesce(a.'||a.column_name||',''0'') as a_'||a.column_name||', coalesce(b.'||b.column_name||',''0'') as b_'||b.column_name||', case when a_'||a.column_name||'=b_'||b.column_name||' then 0 else 1 end as chk_'||a.column_name||','
from tbl_a_vars a,
tbl_b_vars b
where a.column_name=b.column_name;