Нужно вывести item_id и price_in_rub. Price_in_rub – стоимость rub, считается как price из таблицы items умноженная на курс валюты на максимальную дату выставления курса из таблицы rates.
Выглядит все это примерно так: Например: item_id=5 price = 20 EUR, в таблице rates максимальная дата выставления курса евро – 13 января, на эту дату курс равнялся 3,0. Итого price_in_rub 20*3,0 = 60.
items
item_id |price | currency
1 |100 | USD
2 |10 | EUR
3 |20 | USD
4 |40 | USD
5 |20 | EUR
7 |400 | USD
rates
currency| date | rate
USD | 10.01.2017| 1,0
USD | 11.01.2017| 1,5
USD | 12.01.2017| 2,0
EUR | 13.01.2917| 3,0
EUR | 12.01.2017| 2,5
Решение с корелированым подзапросом:
SELECT
itm.item_id
,(itm.price * cur.rate) price_in_rub
FROM items itm
CROSS APPLY
(
SELECT TOP 1 rate
FROM rates
WHERE itm.currency = rates.currency
ORDER BY date desc
) cur
Вот такой вариант по быстрее будет:
SELECT it.item_id, it.price*r.rate AS price_in_rub
FROM dbo.items AS it
JOIN dbo.rates AS r ON it.currency = r.currency
WHERE r.date = (SELECT MAX(date) FROM dbo.rates AS r2 WHERE r.currency = r2.currency)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости