За исключением того, что ваш вывод не имеет особого смысла для меня (подробнее об этом ниже), уловка заключается в том, чтобы использовать ваш CurrencyTable
дважды.
SELECT Account_Name, Account_Number, A.Currency, C2.CurrencyRate * C1.CurrencyRate AS USCurrency, A.Date
FROM AccountTable A
JOIN CurrencyTable C1 ON A.Date = C1.Date AND A.Currency=C1.CurrencyName
JOIN (SELECT * FROM CurrencyTable WHERE CurrencyName='USD') C2 ON A.Date = C2.Date
Как вы заметите в результате, USCurrency
для строки = USD
не возвращает 1. Было бы необходимо разделить 2 ставки друг на друга, чтобы получить этот результат, но по какой-то причине вы запрашиваете продукт в желаемом выводе.
Я считаю, что вы хотите C2.CurrencyRate / C1.CurrencyRate AS USCurrency
или C1.CurrencyRate / C2.CurrencyRate AS USCurrency
, что, конечно, меняет все записи.