Я соединяю две таблицы в SQLalchemy. Если определенное условие выполнено, я хочу присоединиться к столбцу «C» в правой таблице, в противном случае я хочу присоединиться к столбцу «D» в правой таблице.
С сырым SQL я бы использовал оператор CASE. Я пытался реализовать это в SQLalchemy, но получил эту ошибку:
TypeError: объект 'bool' не повторяется
Вот как бы я написал оператор в сыром SQL:
SELECT
t1.A,
t2.B
FROM t1
JOIN t2 ON CASE
WHEN t2.E = '1' THEN t2.C
ELSE t2.D
END LIKE t1.CD || %
И как я пытался написать это в SQLalchemy:
select([t1.columns.A, t2.columns.B]).select_from(
t1.join(t2, case([t2.columns.E == '1', t2.columns.C],
else_=t2.columns.D).like(t1.columns.CD + '%')))