Запрос по курсам валют. Как и в других подобных задачах, в этой ключ к решению - в выборе подходящего инварианта. Здесь инвариантом является количество отличающихся курсов перед данным. Запрос составлялся без оглядки на эффективность. Если данных много и эффективность важна, то можно взять метод решения из http://catalog.mista.ru/public/402534/
Автор: ildarovich
ВЫБРАТЬ
Дано.Период,
Дано.Валюта,
Дано.Курс,
КОЛИЧЕСТВО(Было.Курс) КАК Номер
ПОМЕСТИТЬ Интервалы
ИЗ
Дано КАК Дано
ЛЕВОЕ СОЕДИНЕНИЕ Дано КАК Было
ПО (Было.Валюта = Дано.Валюта)
И (Было.Период <= Дано.Период)
И (Было.Курс <> Дано.Курс)
СГРУППИРОВАТЬ ПО
Дано.Период,
Дано.Валюта,
Дано.Курс
;
ВЫБРАТЬ
МИНИМУМ(Интервалы.Период) КАК ДатаС,
МАКСИМУМ(Интервалы.Период) КАК ДатаПо,
Интервалы.Валюта,
Интервалы.Курс
ИЗ
Интервалы КАК Интервалы
СГРУППИРОВАТЬ ПО
Интервалы.Валюта,
Интервалы.Курс,
Интервалы.Номер
УПОРЯДОЧИТЬ ПО
Интервалы.Валюта,
ДатаС
{2} Ожидается идентификатор
Получение предпоследнего курса валюты
Загрузка курсов валют с сайта РБК
ЗаполнитьДанныеКурсаДляВалюты (БСП)