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

FastCode 51 7

Автор: 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 = Окончания.Х)
{} Ожидается идентификатор
OneTracker - трекер учета рабочего времени программиста 1С

Похожие публикации

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

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

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

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

Срез на даты за период. Шаблон запроса

Модератору