iriyawin / plc_test

0 stars 0 forks source link

задача 4 #4

Open iriyawin opened 6 years ago

iriyawin commented 6 years ago

Имеется таблица курсов валют следующей структуры: create​ ​table​ rates(curr_id ​number​, ​-- ид валюты date_rate ​DATE​, ​-- дата курса rate ​NUMBER​ ​-- значение курса ) Курс валюты устанавливается не на каждую календарную дату. Уникальный ключ: curr_id + date_rate. Напишите запрос, который покажет действующее значение курса заданной валюты на любую заданную календарную дату. Пример данных: CURR_ID DATE_RATE RATE 1 01.01.2010 30 2 01.01.2010 40 1 02.01.2010 32 1 05.01.2010 33 2 10.01.2010 41 2 15.01.2010 42
Требуемый результат: Для валюты 1 на 03.01.2010 получить курс 32 Для валюты 2 на 10.01.2010 получить курс 41

iriyawin commented 6 years ago

declare @d date, @v int select @d = '2010.01.03', @v = 1

select top 1 rate from rates a where (a.date_rate = ( select max(date_rate) as maxdate from rates b where (b.date_rate <= @d) and (b.curr_id = @v) ))

declare @d date, @v int select @d = '2010.01.10', @v = 2

select top 1 rate from rates a where (a.date_rate = ( select max(date_rate) as maxdate from rates b where (b.date_rate <= @d) and (b.curr_id = @v) ))