Вы не можете создавать такие динамические выражения c SQL. Выражение CASE
не может вернуть оператор, как если бы SQL был неким языком макросов. Вы можете только вернуть выражение.
Вы уже использовали следующий подход, используя 1
и -1
с умножением. Почему бы также не использовать его с N
и 1/N
:
<some expression> * CASE WHEN condition THEN 1 / N ELSE N END
Или в вашем случае:
<some expression> * CASE
WHEN senderBillCurrency.id = recipientBillCurrency.id THEN 1
WHEN recipientBillCurrency.base THEN 1 / senderBillCurrency.current_exchange_rate
ELSE senderBillCurrency.current_exchange_rate
END
Обратите внимание, вы можете поместить несколько предложений WHEN
в CASE
выражение. Не нужно их вкладывать