Как свернуть таблицу (строки) в запросе?

1. One_Assembler 15.11.21 23:20 Сейчас в теме
Была такая задача....

Задачу необходимо реализовать в Консоли запросов.
Необходимо вывести по каждому физическому лицу информацию о его состоянии в виде таблицы со следующими колонками: Физическое лицо, Состояние, Дата начала состояния, Дата окончания состояния.
(В запросе не использовать параметры).

По сути осталось схлопнуть строки в соответствующими датами....
(Ниже скрины результата запроса и то ,что надо в идеале)+ база !!!

Стартую с этого запроса...........
ВЫБРАТЬ
	СостоянияФизическихЛиц.ФизическоеЛицо КАК ФизическоеЛицо,
	СостоянияФизическихЛиц.Состояние КАК Состояние,
	СостоянияФизическихЛиц.Период КАК Период,
	МИНИМУМ(ДОБАВИТЬКДАТЕ(СостоянияФизическихЛиц1.Период, СЕКУНДА, -1)) КАК Период1
ИЗ
	РегистрСведений.СостоянияФизическихЛиц КАК СостоянияФизическихЛиц
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияФизическихЛиц КАК СостоянияФизическихЛиц1
		ПО СостоянияФизическихЛиц.ФизическоеЛицо = СостоянияФизическихЛиц1.ФизическоеЛицо
			И СостоянияФизическихЛиц.Период < СостоянияФизическихЛиц1.Период

СГРУППИРОВАТЬ ПО
	СостоянияФизическихЛиц.ФизическоеЛицо,
	СостоянияФизическихЛиц.Состояние,
	СостоянияФизическихЛиц.Период

УПОРЯДОЧИТЬ ПО
	Период
 
Показать
Прикрепленные файлы:
База.dt
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. ZergKRSK 130 16.11.21 04:58 Сейчас в теме
(1) а куда Морозов пропал?
2. МихаилМ 16.11.21 00:00 Сейчас в теме
4. johnnyshut23 73 16.11.21 09:54 Сейчас в теме
Итог заполни в консоли
8. One_Assembler 16.11.21 13:27 Сейчас в теме
5. homer_ 78 16.11.21 10:02 Сейчас в теме
ВЫБРАТЬ
	"Отрезок1" КАК Ссылка,
	ДАТАВРЕМЯ(2021, 10, 1) КАК ДатаНачала,
	ДАТАВРЕМЯ(2021, 10, 2) КАК ДатаКонца,
	"+" КАК Аналитика1
ПОМЕСТИТЬ мТаб

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Отрезок1",
	ДАТАВРЕМЯ(2021, 10, 2),
	ДАТАВРЕМЯ(2021, 10, 5),
	"+"
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Отрезок1",
	ДАТАВРЕМЯ(2021, 10, 5),
	ДАТАВРЕМЯ(2021, 10, 6),
	"+"
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Отрезок1",
	ДАТАВРЕМЯ(2021, 10, 6),
	ДАТАВРЕМЯ(2021, 10, 7),
	"+"
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Отрезок1",
	ДАТАВРЕМЯ(2021, 10, 7),
	ДАТАВРЕМЯ(2021, 10, 9),
	"+"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Отрезок1",
	ДАТАВРЕМЯ(2021, 10, 5),
	ДАТАВРЕМЯ(2021, 10, 8),
	"-"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Отрезок1",
	ДАТАВРЕМЯ(2021, 10, 22),
	ДАТАВРЕМЯ(2021, 10, 25),
	"+"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Отрезок1",
	ДАТАВРЕМЯ(2021, 10, 25),
	ДАТАВРЕМЯ(2021, 10, 26),
	"+"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Отрезок2",
	ДАТАВРЕМЯ(2021, 10, 1),
	ДАТАВРЕМЯ(2021, 10, 7),
	"+"
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Таб.Ссылка КАК Ссылка,
	Таб.ДатаНачала КАК НачалоДуги,
	Таб.ДатаКонца КАК КонецДуги,
	Таб.Аналитика1
ПОМЕСТИТЬ ЗамыканияДлины1
ИЗ
	мТаб КАК Таб
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ПерваяДуга.НачалоДуги,
	ВтораяДуга.КонецДуги,
	ВтораяДуга.Ссылка,
	ВтораяДуга.Аналитика1
ПОМЕСТИТЬ ЗамыканияДлины2
ИЗ
	ЗамыканияДлины1 КАК ПерваяДуга
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗамыканияДлины1 КАК ВтораяДуга
		ПО ПерваяДуга.КонецДуги = ВтораяДуга.НачалоДуги
			И ПерваяДуга.Ссылка = ВтораяДуга.Ссылка
			И ПерваяДуга.Аналитика1 = ВтораяДуга.Аналитика1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	Таб.ДатаНачала,
	Таб.ДатаКонца,
	Таб.Ссылка,
	Таб.Аналитика1
ИЗ
	мТаб КАК Таб
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ПерваяДуга.НачалоДуги,
	ВтораяДуга.КонецДуги,
	ВтораяДуга.Ссылка,
	ВтораяДуга.Аналитика1
ПОМЕСТИТЬ ЗамыканияДлины4
ИЗ
	ЗамыканияДлины2 КАК ПерваяДуга
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗамыканияДлины2 КАК ВтораяДуга
		ПО ПерваяДуга.КонецДуги = ВтораяДуга.НачалоДуги
			И ПерваяДуга.Ссылка = ВтораяДуга.Ссылка
			И ПерваяДуга.Аналитика1 = ВтораяДуга.Аналитика1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	Таб.ДатаНачала,
	Таб.ДатаКонца,
	Таб.Ссылка,
	Таб.Аналитика1
ИЗ
	мТаб КАК Таб
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ПерваяДуга.НачалоДуги,
	ВтораяДуга.КонецДуги,
	ВтораяДуга.Ссылка,
	ВтораяДуга.Аналитика1
ПОМЕСТИТЬ ЗамыканияДлины8
ИЗ
	ЗамыканияДлины4 КАК ПерваяДуга
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗамыканияДлины4 КАК ВтораяДуга
		ПО ПерваяДуга.КонецДуги = ВтораяДуга.НачалоДуги
			И ПерваяДуга.Ссылка = ВтораяДуга.Ссылка
			И ПерваяДуга.Аналитика1 = ВтораяДуга.Аналитика1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	Таб.ДатаНачала,
	Таб.ДатаКонца,
	Таб.Ссылка,
	Таб.Аналитика1
ИЗ
	мТаб КАК Таб
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЗамыканияДлины8.НачалоДуги КАК Предок,
	МАКСИМУМ(ЗамыканияДлины8.КонецДуги) КАК Потомок,
	ЗамыканияДлины8.Ссылка,
	ЗамыканияДлины8.Аналитика1
ПОМЕСТИТЬ м1
ИЗ
	ЗамыканияДлины8 КАК ЗамыканияДлины8
ГДЕ
	ЗамыканияДлины8.НачалоДуги <> ЗамыканияДлины8.КонецДуги

СГРУППИРОВАТЬ ПО
	ЗамыканияДлины8.Ссылка,
	ЗамыканияДлины8.НачалоДуги,
	ЗамыканияДлины8.Аналитика1
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	МИНИМУМ(м1.Предок) КАК Предок,
	м1.Потомок,
	м1.Ссылка,
	м1.Аналитика1
ИЗ
	м1 КАК м1

СГРУППИРОВАТЬ ПО
	м1.Ссылка,
	м1.Потомок,
	м1.Аналитика1
Показать
6. soft_wind 16.11.21 10:25 Сейчас в теме
Попробуйте такой запрос

Выбрать
    Рег.ФизическоеЛицо КАК ФизическоеЛицо,
    Рег.Состояние КАК Состояние,
    Рег.Период КАК Период как Начало,
	АВТОНОМЕРЗАПИСИ() как Номер
Поместить Таб
из
    РегистрСведений.СостоянияФизическихЛиц КАК Рег
Упорядочить по
1,3 
;	

ВЫБРАТЬ
    Рег1.*,
    Рег2.Период как Окончание
ИЗ
	Таб Рег1
ЛЕВОЕ СОЕДИНЕНИЕ Таб Рег2
	ПО	Рег1.ФизическоеЛицо = Рег2.ФизическоеЛицо
    И	Рег1.Номер = Рег2.Номер + 1

Упорядочить по
1,3 
 
Показать
7. AnryMc 849 16.11.21 10:53 Сейчас в теме
Группировка с Min(Период) и Max(Приод1)?
9. Aitbay 16.11.21 13:31 Сейчас в теме
немного непонятна задача
если необходимо получить последние состояния физ лиц то нужно в запросе использовать виртуальную таблицу срез последних на дату и все
11. ivangrant 10 26.07.22 20:28 Сейчас в теме
В итоге удалось решить задачу?
Оставьте свое сообщение

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