У меня есть две таблицы
exchange_rates:
curr1 curr2 rate
USD GBP 0.81
EUR GBP 0.98
transactions
TIMESTAMP user curr amt
2017-01-01 u1 EUR 89
2017-01-01 u2 GBP 3
2017-01-03 u2 USD 10
Я хочу связать exchange_rates
и transactions
и умножить amt
на соответствующий обменный курс в фунтах стерлингов в exchange_rates
.например, в строке 3 из transactions
мы умножим 10 на 0,81, чтобы получить 8,1. НО если сумма указана в фунтах стерлингов в таблице transactions
, я хочу оставить это без изменений.
Я попытался использовать CASE и связать две таблицы следующим образом
select
trans.TIMESTAMP, trans.user
case
when trans.currency != "GBP" then trans.amt*er.rate
else trans.amt
end as "Converted Amount"
from exchange_rates er, transactions trans
where trans.curr = er.curr1
Но это не работает, когда curr
в transactions
равно GBP (строка 2), поскольку в exchange_rates
нет curr1
= GBP, может кто-нибудь посоветовать, какова здесь логикарешить эту проблему?
желаемый результат:
TIMESTAMP user converted amt
2017-01-01 u1 87.22
2017-01-01 u2 3
2017-01-03 u2 8.1