Приветствую.
Пытаюсь получить текущий ФОТ и Тариф сотрудника.
Не могу понять как взять только последний период по каждому сотруднику.
Если по одному, то выбираем первую упорядоченную строку, а вот как сделать, чтобы в общем списке у каждого сотрудника осталась строка с наибольшим периодом, не могу сообразить.
Знающие, подскажите, пожалуйста!
ВЫБРАТЬ
ПлановыйФОТИтогиСрезПоследних.Сотрудник КАК Сотрудник,
ПлановыйФОТИтогиСрезПоследних.ТарифнаяСтавка КАК ТарифнаяСтавка,
ПлановыйФОТИтогиСрезПоследних.ФОТ КАК ФОТ,
ПлановыйФОТИтогиСрезПоследних.Надбавка КАК Надбавка,
ПлановыйФОТИтогиСрезПоследних.Период КАК Период,
ТекущиеКадровыеДанные.ДатаПриема
ИЗ
РегистрСведений.ПлановыйФОТИтоги.СрезПоследних КАК ПлановыйФОТИтогиСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ТекущиеКадровыеДанные.Сотрудник,
ТекущиеКадровыеДанные.ДатаПриема КАК ДатаПриема,
ТекущиеКадровыеДанные.ДатаУвольнения КАК ДатаУвольнения
ИЗ
РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанные
ГДЕ
ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
И ДатаПриема <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) КАК ТекущиеКадровыеДанные
ПО ПлановыйФОТИтогиСрезПоследних.Сотрудник = ТекущиеКадровыеДанные.Сотрудник
///////////////////////////////////////////////////////////////////////////////// 1 Список записей неуволенных сотрудников втСписокЗаписей
ВЫБРАТЬ
ПлановыйФОТИтогиСрезПоследних.Сотрудник КАК Сотрудник,
ПлановыйФОТИтогиСрезПоследних.ТарифнаяСтавка КАК ТарифнаяСтавка,
ПлановыйФОТИтогиСрезПоследних.ФОТ КАК ФОТ,
ПлановыйФОТИтогиСрезПоследних.Надбавка КАК Надбавка,
ПлановыйФОТИтогиСрезПоследних.Период КАК Период,
ТекущиеКадровыеДанные.ДатаПриема КАК ДатаПриема,
ТекущиеКадровыеДанные.ДатаУвольнения КАК ДатаУвольнения
ПОМЕСТИТЬ втСписокЗаписей
ИЗ
РегистрСведений.ПлановыйФОТИтоги.СрезПоследних КАК ПлановыйФОТИтогиСрезПоследних
ПРАВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ТекущиеКадровыеДанные.Сотрудник,
ТекущиеКадровыеДанные.ДатаПриема КАК ДатаПриема,
ТекущиеКадровыеДанные.ДатаУвольнения КАК ДатаУвольнения
ИЗ
РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанные
ГДЕ
ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
И ДатаПриема <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) КАК ТекущиеКадровыеДанные
ПО ПлановыйФОТИтогиСрезПоследних.Сотрудник = ТекущиеКадровыеДанные.Сотрудник
//ГДЕ
// ПлановыйФОТИтогиСрезПоследних.Сотрудник В (&Сотрудник)
;
//////////////////////////////////////////////////////////////////////////////// 2 МАКС ДАТА по каждому сотруднику
ВЫБРАТЬ
втСписокЗаписей.Сотрудник КАК Сотрудник,
МАКСИМУМ(втСписокЗаписей.Период) КАК Период
ПОМЕСТИТЬ втМаксДаты
ИЗ
втСписокЗаписей КАК втСписокЗаписей
СГРУППИРОВАТЬ ПО
втСписокЗаписей.Сотрудник
;
//////////////////////////////////////////////////////////////////////////////// 3
ВЫБРАТЬ
втСписокЗаписей.Сотрудник КАК Сотрудник,
втСписокЗаписей.Период КАК Период
ПОМЕСТИТЬ втДляВычисленияНужной
ИЗ
втСписокЗаписей КАК втСписокЗаписей
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втМаксДаты КАК втМаксДаты
ПО втСписокЗаписей.Сотрудник = втМаксДаты.Сотрудник
И втСписокЗаписей.Период = втМаксДаты.Период
;
//////////////////////////////////////////////////////////////////////////////// 4
ВЫБРАТЬ
втДляВычисленияНужной.Сотрудник КАК Сотрудник,
втДляВычисленияНужной.Период КАК Период
ПОМЕСТИТЬ втНужнаяСтрока
ИЗ
втДляВычисленияНужной КАК втДляВычисленияНужной
СГРУППИРОВАТЬ ПО
втДляВычисленияНужной.Сотрудник,
втДляВычисленияНужной.Период
;
//////////////////////////////////////////////////////////////////////////////// 5
ВЫБРАТЬ
втНужнаяСтрока.Сотрудник КАК Сотрудник,
втНужнаяСтрока.Период КАК Период,
втСписокЗаписей.ТарифнаяСтавка КАК ТарифнаяСтавка,
втСписокЗаписей.ФОТ КАК ФОТ,
втСписокЗаписей.Надбавка КАК Надбавка,
втСписокЗаписей.ДатаПриема КАК ДатаПриема,
втСписокЗаписей.ДатаУвольнения КАК ДатаУвольнения
ИЗ
втНужнаяСтрока КАК втНужнаяСтрока
ЛЕВОЕ СОЕДИНЕНИЕ втСписокЗаписей КАК втСписокЗаписей
ПО (втНужнаяСтрока.Сотрудник = втСписокЗаписей.Сотрудник
И втНужнаяСтрока.Период = втСписокЗаписей.Период
)
ВЫБРАТЬ
ТекущиеКадровыеДанные.Сотрудник,
МАКСИМУМ(ТекущиеКадровыеДанные.ДатаПриема) КАК ДатаПриема
ИЗ
РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанные
ГДЕ
ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
И ДатаПриема <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
СГРУППИРОВАТЬ ПО Сотрудник
///////////////////////////////////////////////////////////////////////////////// 1 Список записей неуволенных сотрудников втСписокЗаписей
ВЫБРАТЬ
ПлановыйФОТИтогиСрезПоследних.Сотрудник КАК Сотрудник,
ПлановыйФОТИтогиСрезПоследних.ТарифнаяСтавка КАК ТарифнаяСтавка,
ПлановыйФОТИтогиСрезПоследних.ФОТ КАК ФОТ,
ПлановыйФОТИтогиСрезПоследних.Надбавка КАК Надбавка,
ПлановыйФОТИтогиСрезПоследних.Период КАК Период,
ТекущиеКадровыеДанные.ДатаПриема КАК ДатаПриема,
ТекущиеКадровыеДанные.ДатаУвольнения КАК ДатаУвольнения
ПОМЕСТИТЬ втСписокЗаписей
ИЗ
РегистрСведений.ПлановыйФОТИтоги.СрезПоследних КАК ПлановыйФОТИтогиСрезПоследних
ПРАВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ТекущиеКадровыеДанные.Сотрудник,
ТекущиеКадровыеДанные.ДатаПриема КАК ДатаПриема,
ТекущиеКадровыеДанные.ДатаУвольнения КАК ДатаУвольнения
ИЗ
РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанные
ГДЕ
ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
И ДатаПриема <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) КАК ТекущиеКадровыеДанные
ПО ПлановыйФОТИтогиСрезПоследних.Сотрудник = ТекущиеКадровыеДанные.Сотрудник
//ГДЕ
// ПлановыйФОТИтогиСрезПоследних.Сотрудник В (&Сотрудник)
;
//////////////////////////////////////////////////////////////////////////////// 2 МАКС ДАТА по каждому сотруднику
ВЫБРАТЬ
втСписокЗаписей.Сотрудник КАК Сотрудник,
МАКСИМУМ(втСписокЗаписей.Период) КАК Период
ПОМЕСТИТЬ втМаксДаты
ИЗ
втСписокЗаписей КАК втСписокЗаписей
СГРУППИРОВАТЬ ПО
втСписокЗаписей.Сотрудник
;
//////////////////////////////////////////////////////////////////////////////// 3
ВЫБРАТЬ
втСписокЗаписей.Сотрудник КАК Сотрудник,
втСписокЗаписей.Период КАК Период
ПОМЕСТИТЬ втДляВычисленияНужной
ИЗ
втСписокЗаписей КАК втСписокЗаписей
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втМаксДаты КАК втМаксДаты
ПО втСписокЗаписей.Сотрудник = втМаксДаты.Сотрудник
И втСписокЗаписей.Период = втМаксДаты.Период
;
//////////////////////////////////////////////////////////////////////////////// 4
ВЫБРАТЬ
втДляВычисленияНужной.Сотрудник КАК Сотрудник,
втДляВычисленияНужной.Период КАК Период
ПОМЕСТИТЬ втНужнаяСтрока
ИЗ
втДляВычисленияНужной КАК втДляВычисленияНужной
СГРУППИРОВАТЬ ПО
втДляВычисленияНужной.Сотрудник,
втДляВычисленияНужной.Период
;
//////////////////////////////////////////////////////////////////////////////// 5
ВЫБРАТЬ
втНужнаяСтрока.Сотрудник КАК Сотрудник,
втНужнаяСтрока.Период КАК Период,
втСписокЗаписей.ТарифнаяСтавка КАК ТарифнаяСтавка,
втСписокЗаписей.ФОТ КАК ФОТ,
втСписокЗаписей.Надбавка КАК Надбавка,
втСписокЗаписей.ДатаПриема КАК ДатаПриема,
втСписокЗаписей.ДатаУвольнения КАК ДатаУвольнения
ИЗ
втНужнаяСтрока КАК втНужнаяСтрока
ЛЕВОЕ СОЕДИНЕНИЕ втСписокЗаписей КАК втСписокЗаписей
ПО (втНужнаяСтрока.Сотрудник = втСписокЗаписей.Сотрудник
И втНужнаяСтрока.Период = втСписокЗаписей.Период
)