Сделать оптимальный запрос: левое соединение только одного значения ближайшее к дате

Новая тема
Показывать по 10 20 40 сообщений
Вопрос к знатокам запросов.

Есть запрос, который к ОсновнойРегистрСведений должен добавить данные из ДанныеРегистра при совпадении поля Сотрудник
Но добавить только одно ближайшее к ДатаДействия значение.

Не соображу как оптимальнее выбрать только ОДНО значение из регистра.
В примере ниже у меня добавляются все записи регистра ДанныеРегистра, если ДанныеРегистра.Дата <= ОсновнойРегистрСведений.ДатаДействия

ВЫБРАТЬ
   ДанныеРегистра.Сотрудник,
   ДанныеРегистра.Дата,
   ДанныеРегистра.Значение,
   ОсновнойРегистрСведений.Сотрудник КАК Сотрудник1,
   ОсновнойРегистрСведений.ДатаДействия КАК Дата1
ИЗ
   ОсновнойРегистрСведений КАК ОсновнойРегистрСведений
       ЛЕВОЕ СОЕДИНЕНИЕ ДанныеРегистра КАК ДанныеРегистра
       ПО ОсновнойРегистрСведений.Сотрудник = ДанныеРегистра.Сотрудник
           И (ДанныеРегистра.Дата <= ОсновнойРегистрСведений.ДатаДействия )
СрезПервых и СрезПоследних
Это как?
Я срезаю на ОсновнойРегистрСведений.ДатаДействия, а она всегда разная.
Я не знаю как в параметры добавить данные из другой таблицы (((((
В 2 пакета надо делать.

 - Определяешь самую раннюю или самую позднюю дату по сотруднику (функции минимум и максимум в группировке).
 - Соединяешь с данными через связь максимальной (или минимальной даты) с датой данных.
>   - Определяешь самую раннюю или самую позднюю дату по сотруднику (функции минимум и максимум в группировке).
Теоретически могут быть три даты на одного сотрудника. Как быть со средней датой тогда?


>   - Соединяешь с данными через связь максимальной (или минимальной даты) с датой данных.
А тут не понятно условие связи (((
У тебя есть выборка

Сотрудник | ДатаДействия

в первом пакете получаешь

Сотрудник | ДатаДействия | Дата1
 Дата2
 Дата3

группируешь и получаешь

Сотрудник | ДатаДействия | МинДата

получаешь значения на минимальную дату

Сотрудник | ДатаДействия | МинДата = ДатаN | Значение

Вот вроде бы на пальцах расписал. Если и сейчас не понятно, то давай выкладывай структуру регистров и четкое описание задачи.
По одному сотруднику это понятно, а когда много сотрудников?

> группируешь и получаешь
>  
> Сотрудник | ДатаДействия | МинДата

Как сгруппировать и получить МинДата у каждого сотрудника?
"Вот запрос, которые можно допилить (состоит из временных таблиц):

ВЫБРАТЬ
   ДанныеРегистра.Сотрудник,
   ДанныеРегистра.Дата,
   ДанныеРегистра.Значение
ПОМЕСТИТЬ ВТ_ДанныеРегистра
ИЗ
   ДанныеРегистра КАК ДанныеРегистра
;

////////////////////////////////////////////////////­////////////////////////////
ВЫБРАТЬ
   ОсновнойРегистрСведений.Сотрудник КАК Сотрудник1,
   ОсновнойРегистрСведений.ДатаДействия КАК Дата1
ПОМЕСТИТЬ ВТ_ОсновнойРегистр
ИЗ
   ОсновнойРегистрСведений КАК ОсновнойРегистрСведений"
> ...то давай выкладывай структуру регистров и четкое описание задачи.
Денис, может я что-то не поняла в задании, но ведь виртуальная таблица срезпоследних это то что надо ?
Читают тему
(гостей: 1)

Быстрый переход