Добрый день! Есть Запрос по РегиструСведений.СостояниеРаботниковОрганизаций
Результат получаю такой:
ДатаНачала ДатаЗавершения Состояние
27.12.2016 23.01.2017 В ежегодном отпуске
01.02.2017 Отсутствует по невыясненной причине
27.02.2017 Работает
03.03.2017 09.03.2017 В отпуске без сохранения зарплаты
Каким образом Для второй строки в колонке "ДатаЗавершения" получить дату "ДатаНачала" из следующей строки?
Результат получаю такой:
ДатаНачала ДатаЗавершения Состояние
27.12.2016 23.01.2017 В ежегодном отпуске
01.02.2017 Отсутствует по невыясненной причине
27.02.2017 Работает
03.03.2017 09.03.2017 В отпуске без сохранения зарплаты
Каким образом Для второй строки в колонке "ДатаЗавершения" получить дату "ДатаНачала" из следующей строки?
По теме из базы знаний
Найденные решения
Добавьте в запрос еще такую же таблицу, сделайте левое соединение этих таблиц с условием Таблица1.ДатаНачала < Таблица2.ДатаНачала и далее по примеру (Первые два запроса просто строят две одинаковые таблицы. У вас они будут браться из регистров). Числа нудно заменить на даты и в условии проверка не на "0", а на пустую дату:
ВЫБРАТЬ
1 КАК ДатаНачала,
2 КАК ДатаОкончания,
"Событие1" КАК Событие
ПОМЕСТИТЬ ВременнаяТаблица1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
3,
0,
"Событие2"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
4,
0,
"Событие3"
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
1 КАК ДатаНачала,
2 КАК ДатаОкончания,
"Событие1" КАК Событие
ПОМЕСТИТЬ ВременнаяТаблица2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
3,
0,
"Событие2"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
4,
0,
"Событие3"
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВременнаяТаблица1.ДатаНачала КАК ДатаНачала,
МИНИМУМ(ВременнаяТаблица1.ДатаОкончания) КАК ДатаОкончания,
ВременнаяТаблица1.Событие КАК Событие,
МИНИМУМ(ВременнаяТаблица2.ДатаНачала) КАК ДатаНачала2
ПОМЕСТИТЬ ВременнаяТаблица3
ИЗ
ВременнаяТаблица1 КАК ВременнаяТаблица1
ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблица2 КАК ВременнаяТаблица2
ПО (ВременнаяТаблица1.ДатаНачала < ВременнаяТаблица2.ДатаНачала)
СГРУППИРОВАТЬ ПО
ВременнаяТаблица1.ДатаНачала,
ВременнаяТаблица1.Событие
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВременнаяТаблица3.ДатаНачала КАК ДатаНачала,
ВЫБОР
КОГДА ВременнаяТаблица3.ДатаОкончания = 0
ТОГДА ВременнаяТаблица3.ДатаНачала2
ИНАЧЕ ВременнаяТаблица3.ДатаОкончания
КОНЕЦ КАК ДатаОкончания,
ВременнаяТаблица3.Событие
ИЗ
ВременнаяТаблица3 КАК ВременнаяТаблица3
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Добавьте в запрос еще такую же таблицу, сделайте левое соединение этих таблиц с условием Таблица1.ДатаНачала < Таблица2.ДатаНачала и далее по примеру (Первые два запроса просто строят две одинаковые таблицы. У вас они будут браться из регистров). Числа нудно заменить на даты и в условии проверка не на "0", а на пустую дату:
ВЫБРАТЬ
1 КАК ДатаНачала,
2 КАК ДатаОкончания,
"Событие1" КАК Событие
ПОМЕСТИТЬ ВременнаяТаблица1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
3,
0,
"Событие2"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
4,
0,
"Событие3"
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
1 КАК ДатаНачала,
2 КАК ДатаОкончания,
"Событие1" КАК Событие
ПОМЕСТИТЬ ВременнаяТаблица2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
3,
0,
"Событие2"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
4,
0,
"Событие3"
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВременнаяТаблица1.ДатаНачала КАК ДатаНачала,
МИНИМУМ(ВременнаяТаблица1.ДатаОкончания) КАК ДатаОкончания,
ВременнаяТаблица1.Событие КАК Событие,
МИНИМУМ(ВременнаяТаблица2.ДатаНачала) КАК ДатаНачала2
ПОМЕСТИТЬ ВременнаяТаблица3
ИЗ
ВременнаяТаблица1 КАК ВременнаяТаблица1
ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблица2 КАК ВременнаяТаблица2
ПО (ВременнаяТаблица1.ДатаНачала < ВременнаяТаблица2.ДатаНачала)
СГРУППИРОВАТЬ ПО
ВременнаяТаблица1.ДатаНачала,
ВременнаяТаблица1.Событие
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВременнаяТаблица3.ДатаНачала КАК ДатаНачала,
ВЫБОР
КОГДА ВременнаяТаблица3.ДатаОкончания = 0
ТОГДА ВременнаяТаблица3.ДатаНачала2
ИНАЧЕ ВременнаяТаблица3.ДатаОкончания
КОНЕЦ КАК ДатаОкончания,
ВременнаяТаблица3.Событие
ИЗ
ВременнаяТаблица3 КАК ВременнаяТаблица3
Показать
Я пошла более простым путем: добавила еще регистр сведений по срезу последних и прописала условие для поля "ДатаЗавершения":
ВЫБОР
КОГДА СостояниеРаботниковОрганизаций.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
И НЕ СостояниеРаботниковОрганизаций.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Работает)
ТОГДА ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизацийСрезПоследних.Период, СЕКУНДА, -1)
ИНАЧЕ ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизаций.ПериодЗавершения, СЕКУНДА, -1)
КОНЕЦ
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот