Предыдущая и последующая запись в запросе (LEAD & LAG)
Доброе время суток, уважаемые.
Задача такая.
Есть непериодический регистр сведений . Конкретно "ИсторияИспользованияШтатногоРасписания" (ЗУП 3.1)
Требуется в запросе получить текущую запись, а также ее предшественника и последователя по имеющемуся упорядочиванию (Измерению "Дата"). Аналог функций LEAD и LAG.
Заранее благодарен.
Задача такая.
Есть непериодический регистр сведений . Конкретно "ИсторияИспользованияШтатногоРасписания" (ЗУП 3.1)
Требуется в запросе получить текущую запись, а также ее предшественника и последователя по имеющемуся упорядочиванию (Измерению "Дата"). Аналог функций LEAD и LAG.
Заранее благодарен.
Найденные решения
(5) Ну, так а мы об том же.
Ну, в вт можно всякие измерения еще выбрать, по ним сгруппировать, по ним же соединяться, их же выбрать во втором запросе как текущие, минус одно соединение будет.
ВЫБРАТЬ
ТекущаяЗапись.Дата КАК Дата,
МАКСИМУМ(ПредыдущаяЗапись.Дата) КАК ПредыдущаяДата,
МИНИМУМ(СледующаяЗапись.Дата) КАК СледующаяДата
ПОМЕСТИТЬ
Даты
ИЗ
МойРегистр КАК ТекущаяЗапись
ЛЕВОЕ СОЕДИНЕНИЕ
МойРегистр КАК ПредыдущаяЗапись
ПО
ТекущаяЗапись.Дата > ПредыдущаяЗапись.Дата
ЛЕВОЕ СОЕДИНЕНИЕ
МойРегистр КАК СледующаяЗапись
ПО
ТекущаяЗапись.Дата < СледующаяЗапись.Дата
;
ВЫБРАТЬ
ПредыдущаяЗапись.ЗначениеТакоеТо КАК ПредыдущееЗначение,
ТекущаяЗапись.ЗначениеТакоеТо КАК ТекущееЗначение,
СледующаяЗапись.ЗначениеТакоеТо КАК СледующееЗначение
ИЗ
Даты
ЛЕВОЕ СОЕДИНЕНИЕ
МойРегистр КАК ТекущаяЗапись
ПО
Даты.Дата = ТекущаяЗапись.Дата
ЛЕВОЕ СОЕДИНЕНИЕ
МойРегистр КАК ПредыдущаяЗапись
ПО
Даты.ПредыдущаяДата = ПредыдущаяЗапись.Дата
ЛЕВОЕ СОЕДИНЕНИЕ
МойРегистр КАК СледующаяЗапись
ПО
Даты.СледующаяДата = СледующаяЗапись.Дата
ПоказатьНу, в вт можно всякие измерения еще выбрать, по ним сгруппировать, по ним же соединяться, их же выбрать во втором запросе как текущие, минус одно соединение будет.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5) Ну, так а мы об том же.
Ну, в вт можно всякие измерения еще выбрать, по ним сгруппировать, по ним же соединяться, их же выбрать во втором запросе как текущие, минус одно соединение будет.
ВЫБРАТЬ
ТекущаяЗапись.Дата КАК Дата,
МАКСИМУМ(ПредыдущаяЗапись.Дата) КАК ПредыдущаяДата,
МИНИМУМ(СледующаяЗапись.Дата) КАК СледующаяДата
ПОМЕСТИТЬ
Даты
ИЗ
МойРегистр КАК ТекущаяЗапись
ЛЕВОЕ СОЕДИНЕНИЕ
МойРегистр КАК ПредыдущаяЗапись
ПО
ТекущаяЗапись.Дата > ПредыдущаяЗапись.Дата
ЛЕВОЕ СОЕДИНЕНИЕ
МойРегистр КАК СледующаяЗапись
ПО
ТекущаяЗапись.Дата < СледующаяЗапись.Дата
;
ВЫБРАТЬ
ПредыдущаяЗапись.ЗначениеТакоеТо КАК ПредыдущееЗначение,
ТекущаяЗапись.ЗначениеТакоеТо КАК ТекущееЗначение,
СледующаяЗапись.ЗначениеТакоеТо КАК СледующееЗначение
ИЗ
Даты
ЛЕВОЕ СОЕДИНЕНИЕ
МойРегистр КАК ТекущаяЗапись
ПО
Даты.Дата = ТекущаяЗапись.Дата
ЛЕВОЕ СОЕДИНЕНИЕ
МойРегистр КАК ПредыдущаяЗапись
ПО
Даты.ПредыдущаяДата = ПредыдущаяЗапись.Дата
ЛЕВОЕ СОЕДИНЕНИЕ
МойРегистр КАК СледующаяЗапись
ПО
Даты.СледующаяДата = СледующаяЗапись.Дата
ПоказатьНу, в вт можно всякие измерения еще выбрать, по ним сгруппировать, по ним же соединяться, их же выбрать во втором запросе как текущие, минус одно соединение будет.
(1) Можно и так:
Если принять что измерение единственное. В данном примере это Сотрудник и в реальном РС оно не единственное, но предполагаем что оно единственное. У Вас же другой регистр с другой структурой.
Фильтр на код справочника поставил, что бы результат на скрин поместился и взялись сотрудники, по которым движений не много.
Если принять что измерение единственное. В данном примере это Сотрудник и в реальном РС оно не единственное, но предполагаем что оно единственное. У Вас же другой регистр с другой структурой.
Фильтр на код справочника поставил, что бы результат на скрин поместился и взялись сотрудники, по которым движений не много.
Прикрепленные файлы:

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот