Заполнить таблицу значениями курсов валют на каждую дату #409503


#0 by masenshi
Есть регистр сведений курсы валют. например, в него занесли всего 3 записи за месяц. 02.03.09  -  35 15.03.09  -  34 26.03.09  -  33 Нужно получить в запросе таблицу: 01.03.09  -  34 (с предыдущего месяца) 02.03.09  -  35 31.03.09  -  33 Чтобы потом этот запрос использовать дальше
#1 by birkoFFFF
ну... и что не получилось ?
#2 by masenshi
не получилось ничего. В коде реализовать это довольно просто через цикл и срез последних. А вот в запросе?
#3 by vinneya
вот, через временные таблицы:
#4 by masenshi
я могу и проще написать в коде. А как такую табличку получить в запросе, чтобы использовать ее для соединений в запросах?
#5 by vinneya
Таблицу "Дата - Курс"? Помести в другой внешний источник, пример перед глазами :)
#6 by masenshi
Задача сделать все это запросом без какого-либо другого кода. Чисто на языке SQL, скажем так.
#7 by Vahe
такую задачу часто задают на собеседованиях
#8 by Vahe
не надо использовать срез последных, она те не поможет
#9 by masenshi
Я уже что только не пробовал - ничего не помогло. Вот и ищу решение
#10 by Vahe
Надо сравнить периодами, как получить каждую дату в периоде, тут где то был
#11 by Vahe
условие срванения ПериодИзИнтервала >= ПериодИзРегистра, после слеай группировку по Максимум, и все
#12 by Vahe
Притом очень многие не раешают на собеседовании, я бы сказал очень мизерное количество решает
#13 by masenshi
Ты напиши рабочий запрос.
#14 by Mitriy
любишь извраты? вот, рабочий вариант:
#15 by Mitriy
+ вариант получения списка дат в запросе...
#16 by masenshi
Ты думаешь мне нужно выдернуть все даты, даже если не был установлен на них курс?
#17 by masenshi
Даты я выдернуть могу. А вот ес ли на них не установлен курс, то у меня стоит Null, а мне нужно чтоб стоял курс предыдущей даты, т.е. как бы срез последних, но он не пригоден. Вот в чем задача.
#18 by Vahe
Вот условие ПериодИзИнтервала >= ПериодИзРегистра, если до этой даты не был курс, то будет NULL, не откуда брать, а если до даты была хотя бы одна запись, то не будет NULL
#19 by Mitriy
тебе в запрос сделали, что не устраивает? либо используешь менеджер временных таблиц или пакетный запрос (для меня предпочтительней), либо получаешь даты запросом, как в вместо временной таблицы... чеого еще-то не хватает для счастья
#20 by masenshi
Да. Тогда не будет NULL. Тогда будет записей целая куча.  Причем все больше и больше. Не работает.
#21 by Vahe
я же написал, групировать по Максимум
#22 by Vahe
по периоду
#23 by Mitriy
а у меня вот это работает... чудеса...
#24 by masenshi
напиши код.
#25 by Mitriy
млин, там во вложенном запросе ЛЕВОЕ соединение...
#26 by Alpen906
Давай мейл. Вышлю обработку.
#27 by masenshi
Shurik_r2000 сабакка mail.ru
#28 by Mitriy
млин... чо-то я напутал сгоряча...
#29 by masenshi
Вродь работает твой запрос. Так понятнее ВЫБРАТЬ ГДЕ    п.Дата МЕЖДУ &НачПер И &КонПер ;    (ВЫБРАТЬ
#30 by Mitriy
Вот, по валюте не связал:    (ВЫБРАТЬ
#31 by Alpen906
. Правда там часть реализованоа в коде, а не в запросе. Но можно потом эту таблицу передать в запрос и там использовать. Или принципиально получить это все одним запросом?
#32 by masenshi
Спасибо. Код не нужне. С запросам разобрались. Всем спасибо!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С