У меня есть одна таблица данных с доходами в нескольких валютах (назовем ее TRANSACTION_TABLE
, с такими столбцами:
TRANSACTION_NAME
TRANSACTION_VALUE
CURRENCY
и еще одна таблица с курсами валют (EXCHANGE_RATE
) с такими столбцами:
FROM_CURRENCY (e.g. JPY)
TO_CURRENCY (e.g. USD)
EXCHANGE_RATE (x)
Таблица содержит, как минимум, каждую валюту, конвертируемую в доллары США, но не является исчерпывающей с обменными курсами для значений, отличных от доллара США TO_CURRENCY
.
То, что я пытаюсь достичь, - это запрос, который преобразует транзакции в любую валюту, даже если это явно не оговорено в таблице EXCHANGE_RATE
, путем преобразования сначала валют в доллары США, а затем из доллара США в валюту назначения ,
например. 1000 JPY в GBP:
- Найти курс JPY к USD - расчет =
1000 * EXCHANGE_RATE = 9
- Найти курс GBP к USD - расчет =
9 \ EXCHANGE_RATE = 7
В данный момент я сделал левое соединение для TRANSACTION_TABLE
на EXCHANGE_RATE
, но я потерян, куда идти дальше.
Любая помощь будет принята с благодарностью.
Запрос (очень простой), который я создал до сих пор, выглядит следующим образом, и я начинающий пользователь SQL. Сначала я построил этот запрос для преобразования в доллары США, что прекрасно работает (поскольку моя таблица обменных курсов содержит значения для всех валют по отношению к доллару США), но, очевидно, он не работает при установке валюты назначения в фунтах стерлингов, поскольку он просто возвращает нули.
SELECT TRANSACTION_NAME,
SUM (TRANSACTION_VALUE * EXCHANGE_RATE)
AS "REVENUE GBP"
FROM TRANSACTION_TABLE S
LEFT JOIN EXCHANGE_RATE C ON S.CURRENCY = C.FROM_CURRENCY AND C.TO_CURRENCY = 'GBP'
ORDER BY TRANSACTION_NAME