Как решить ОШИБКУ: оператор не уникален: «неизвестно» — «неизвестно» в динамическом SQL-запросе?

У меня есть блок выполнения внутри хранимой процедуры, и я динамически выполняю запрос:

execute 'create table raw_mine.financial_multicase_xwalk_' || target_date || '
as
select distinct
  a.cvr_mnth_dt
, a.filler_string_10
, a.alt_prsn_id
, a.member_id
from raw_mine.rstag_mine_TO_CGT_MBRSHP_' || target_date || ' a
left join
raw_mine.rstag_mine_TO_CGT_FIN_' || target_date || ' b
on a.filler_string_10 = b.filler_string_10
and a.member_id = b.member_id
and left ( a.cvr_mnth_dt, 6) = left ( b.cvr_mnth_dt, 6)
left join
raw_mine.rstag_mine_TO_CGT_FIN_' || target_date || ' cp
on a.filler_string_10 = cp.filler_string_10
and a.alt_prsn_id = cp.alt_prsn_id
and left ( a.cvr_mnth_dt, 6) = left ( cp.cvr_mnth_dt, 6)
left join
raw_mine.member_xwalk_dulality_' || target_date || ' c
on a.alt_prsn_id = c.alt_prsn_id
and left ( a.cvr_mnth_dt, 6) = left ( replace ( c.cvr_mnth_dt, '-', ''), 6)
where nullif ( c.alt_prsn_id, '') is null
and cp.alt_prsn_id is not null
and cp.member_id != a.member_id;';

все столбцы являются varchars, а target_date — входной параметр процедуры, и я получаю сообщение об ошибке

Ошибка SQL [42725]: ОШИБКА: оператор не уникален: «неизвестно» — «неизвестно»

Подсказка: Не удалось выбрать лучшего кандидата-оператора. Возможно, вам придется добавить явное приведение типов.

Есть идеи, как это решить?

Этот запрос работает при выполнении вне процедуры.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, вы забыли экранировать одинарные кавычки, определяющие строки в этих строках:

and left ( a.cvr_mnth_dt, 6) = left ( replace ( c.cvr_mnth_dt, '-', ''), 6)
where nullif ( c.alt_prsn_id, '') is null

Вы, вероятно, захотите

and left ( a.cvr_mnth_dt, 6) = left ( replace ( c.cvr_mnth_dt, ''-'', ''''), 6)
where nullif ( c.alt_prsn_id, '''') is null

Другие вопросы по теме