@vlad_281093

Как вывести только последнюю дату из имеющихся в столбце, при условии, что они не все относятся к 1 значению?

Собственно, задание.263cef66418e4fa4bc03856c0dcfe5c5.PNG
И то, что я сделал уже.
sqlfiddle.com/#!6/a672a/152
Суть проблемы в том, что не понимаю, как именно совместить значение в Rates.currency c Rates.date, ибо если банально делать:
WHERE I.item_id = 'number'
AND R.date = (SELECT MAX(date) 
                       FROM Rates
                       )


То выходит чушь.
Или я, вероятно, пошел не тем путем?
  • Вопрос задан
  • 603 просмотра
Решения вопроса 1
0xD34F
@0xD34F
Можно попробовать указывать условие по валюте/максимальной дате в джоине, типа так:
SELECT
  item_id,
  I.price * COALESCE(R.rate, 1) price_in_byr 
FROM Items AS I
LEFT JOIN Rates AS R ON
  I.currency = R.currency AND
  R.date = (SELECT MAX(date) FROM Rates WHERE Rates.currency = I.currency)
WHERE
  item_id = 5;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
Исправил:
SELECT TOP 1 item_id, date,
 CASE I.currency
        WHEN 'BYR'
        THEN I.price
        ELSE I.price * R.rate
 END price_in_byr 
FROM Items AS I FULL JOIN Rates AS R ON I.currency = R.currency
WHERE item_id = 5 AND R.date <= (SELECT MAX(date) FROM Rates) 
ORDER BY date DESC
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы