Разбиение произвольного периода на интервалы в запросе

FastCode 1524 12 22 67

Автор: ildarovich

ВЫБРАТЬ
    0 КАК Х
ПОМЕСТИТЬ Бит
ОБЪЕДИНИТЬ
ВЫБРАТЬ
    1
;
ВЫБРАТЬ
    Б0.Х + 2 * (Б1.Х + 2 * (Б2.Х + 2 * (Б3.Х + 2 * (Б4.Х + 2 * Б5.Х)))) КАК Х
ПОМЕСТИТЬ Периоды
ИЗ
    Бит КАК Б0,
    Бит КАК Б1,
    Бит КАК Б2,
    Бит КАК Б3,
    Бит КАК Б4,
    Бит КАК Б5
ГДЕ
    Б0.Х + 2 * (Б1.Х + 2 * (Б2.Х + 2 * (Б3.Х + 2 * (Б4.Х + 2 * Б5.Х)))) < РАЗНОСТЬДАТ(&Дата1, &Дата2, МЕСЯЦ)
;
ВЫБРАТЬ
    ЕСТЬNULL(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Дата1, МЕСЯЦ, Начала.Х + 1), МЕСЯЦ), &Дата1) КАК ДатаНачала,
    ЕСТЬNULL(КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&Дата1, МЕСЯЦ, Окончания.Х), МЕСЯЦ), &Дата2) КАК ДатаОкончания
ИЗ
    Периоды КАК Начала
        ПОЛНОЕ СОЕДИНЕНИЕ Периоды КАК Окончания
        ПО (Начала.Х + 1 = Окончания.Х)
1
{} Ожидается идентификатор

Комментарии

realyWell
#1, 10 ноября 2022 08:17

Спасибо тебе, добрый человек


См. также

Нахождение интервалов в запросе

Инвертирование периодов в запросе

Объединение непересекающихся интервалов в запросе

Определение суммарного покрытия перекрывающихся интервалов

Получить даты за период в запросе

ПодключитьТестовыйПериод (БСП)

ПодключениеТестовыхПериодов_ПроверитьСостояниеЗапроса (БСП)

ПроверитьСостояниеЗапроса (БСП)

Средневзвешенный курс валюты за указанный период

Модератору