Цитата(Vofka @ 07.08.11, 19:52) необходимо зарегистрироваться для просмотра ссылки
Что за бред? Если дата отчета 7.08.2011 - выбираем срез последних на (7.08.2011) - 1, т.е. на 6.07.2011 вот и всё.
Уважаемый! Если вы не разобрались в вопросе - не нужно оскорблять вопрошающего!
Во-первых - не "(7.08.2011) - 1", а "(7.08.2011) - 24*60*60*1", т.к. Дата в 8.Х это ДатаВремя, и 1 - это 1 секунда
Во-вторых - если дата отчета припадает на Пн то дата изменения курса будет на 3 дня раньше (в Пт) (я уже молчу про валюты, которые меняются реже чем раз в день) и построенный по Вашему варианту запрос вернет одинаковый результат
По существу вопроса: у меня это получается через пакет (чтобы вложенный запрос ПоследнийКурс не дублировать дважды):
ВЫБРАТЬ
КурсыВалютСрезПоследних.Период КАК Период,
КурсыВалютСрезПоследних.Валюта КАК Валюта,
КурсыВалютСрезПоследних.Курс КАК Курс
ПОМЕСТИТЬ ПоследнийКурс
ИЗ
РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних
ГДЕ
КурсыВалютСрезПоследних.Период < &ДатаОтчета
И КурсыВалютСрезПоследних.Валюта В(&СписокВалют)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
КурсыВалют.Валюта,
КурсыВалют.Период КАК ПредпоследнийПериод,
КурсыВалют.Курс КАК ПредпоследнийКурс,
ПоследнийКурс.Период КАК ПоследнийПериод,
ПоследнийКурс.Курс КАК ПоследнийКурс
ИЗ
РегистрСведений.КурсыВалют КАК КурсыВалют
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
КурсыВалют.Валюта КАК Валюта,
МАКСИМУМ(КурсыВалют.Период) КАК Период
ИЗ
РегистрСведений.КурсыВалют КАК КурсыВалют
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоследнийКурс КАК ВложенныйЗапрос
ПО КурсыВалют.Период < ВложенныйЗапрос.Период
И КурсыВалют.Валюта = ВложенныйЗапрос.Валюта
СГРУППИРОВАТЬ ПО
КурсыВалют.Валюта) КАК ПредпоследнийПериод
ПО (ПредпоследнийПериод.Валюта = КурсыВалют.Валюта)
И (ПредпоследнийПериод.Период = КурсыВалют.Период)
ЛЕВОЕ СОЕДИНЕНИЕ ПоследнийКурс КАК ПоследнийКурс
ПО (ПоследнийКурс.Валюта = КурсыВалют.Валюта)