Вход | Регистрация
 

Эквилибристика в запросах

Эквилибристика в запросах
Я
   MihailShesternev
 
06.08.20 - 10:29
Добрый день!
Вопрос у меня есть табличка
в ней строки
Нач 01.01.2020 Кон 01.01.2020
Нач 05.01.2020 Кон 10.01.2020
Нач 05.01.2020 Кон 31.01.2020
Можете привести пример работающего кода ЗАПРОСА
который превратит ее в
Нач 01.01.2020 Кон 01.01.2020
Нач 05.01.2020 Кон 31.01.2020
???
(строки нельзя сравнивать с внешними переменными т.е. если интервал дат строки 2 входит в интервал даты строки 3 то строки 2 не должно быть на выходе)
   Конструктор1С
 
1 - 06.08.20 - 10:37
А если будут вот такие даты, что на выходе должно получиться?

Нач 01.01.2020 Кон 01.01.2020
Нач 03.01.2020 Кон 10.01.2020
Нач 05.01.2020 Кон 31.01.2020
   Dmitry1c
 
2 - 06.08.20 - 10:49
(0) сгруппировать по дате1, максимум по дате2
   MyNick
 
3 - 06.08.20 - 10:51
(2) ну это слишком просто. А где в твоем решении эквилибристика?
   ptiz
 
4 - 06.08.20 - 11:24
(0) С данной таблицей всё просто. А вот если будут несколько последовательно накрывающих друг друга интервалов - это интереснее.
   МихаилМ
 
5 - 06.08.20 - 11:28
(0)Запросом выделить пересечения интервалов времени в отдельные интервалы
модераторы, закройте ветку . тк тема не соответствует сути вопроса.
   ptiz
 
6 - 06.08.20 - 11:45
Решение "в лоб" на примере целых чисел. Для 7ми последовательных интервалов работает:

ВЫБРАТЬ
    1 КАК Нач,
    5 КАК Кон
ПОМЕСТИТЬ ТЗ

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

ВЫБРАТЬ
    6,
    7

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

ВЫБРАТЬ
    7,
    10

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

ВЫБРАТЬ
    11,
    11

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

ВЫБРАТЬ
    12,
    13

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

ВЫБРАТЬ
    15,
    15

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

ВЫБРАТЬ
    17,
    20

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

ВЫБРАТЬ
    19,
    22


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

ВЫБРАТЬ
    22,
    24


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

ВЫБРАТЬ
    25,
    26

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

ВЫБРАТЬ
    27,
    27
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    28,
    28
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    29,
    29
;
////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ РАЗЛИЧНЫЕ
    МИНИМУМ(ТЗСоед.Нач) КАК Нач,
    МАКСИМУМ(ТЗСоед.Кон) КАК Кон
ПОМЕСТИТЬ ТЗ2
ИЗ
    ТЗ КАК ТЗ
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗСоед
        ПО ТЗ.Нач МЕЖДУ ТЗСоед.Нач И ТЗСоед.Кон + 1
            ИЛИ ТЗ.Кон МЕЖДУ ТЗСоед.Нач - 1 И ТЗСоед.Кон
СГРУППИРОВАТЬ ПО
    ТЗ.Нач,
    ТЗ.Кон
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ РАЗЛИЧНЫЕ
    МИНИМУМ(ТЗСоед.Нач) КАК Нач,
    МАКСИМУМ(ТЗСоед.Кон) КАК Кон
ПОМЕСТИТЬ ТЗ3
ИЗ
    ТЗ2 КАК ТЗ2
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ2 КАК ТЗСоед
        ПО ТЗ2.Нач МЕЖДУ ТЗСоед.Нач И ТЗСоед.Кон + 1
            ИЛИ ТЗ2.Кон МЕЖДУ ТЗСоед.Нач - 1 И ТЗСоед.Кон
СГРУППИРОВАТЬ ПО
    ТЗ2.Нач,
    ТЗ2.Кон


;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ РАЗЛИЧНЫЕ
    МИНИМУМ(ТЗСоед.Нач) КАК Нач,
    МАКСИМУМ(ТЗСоед.Кон) КАК Кон
ИЗ
    ТЗ3 КАК ТЗ3
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ3 КАК ТЗСоед
        ПО ТЗ3.Нач МЕЖДУ ТЗСоед.Нач И ТЗСоед.Кон + 1
            ИЛИ ТЗ3.Кон МЕЖДУ ТЗСоед.Нач - 1 И ТЗСоед.Кон
СГРУППИРОВАТЬ ПО
    ТЗ3.Нач,
    ТЗ3.Кон
   МихаилМ
 
7 - 06.08.20 - 12:02
   fisher
 
8 - 06.08.20 - 12:32
(2) +1
(0) Тестовая задачка, что ли? Это еще не эквилибристика, а проверка элементарных навыков.
   МихаилМ
 
9 - 06.08.20 - 13:28

Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.