Сжатое представление последовательности дат запросом

FastCode 1524 12 22 67

Задача похожа на сжатое представление ряда чисел, только роль чисел играют даты. Дана последовательность дат. Нужно заменить ее последовательностью непрерывных интервалов дат. Вот решение

Автор: ildarovich

ВЫБРАТЬ 
    Даты.Дата, 
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДатыДо.Дата) КАК Номер 
ПОМЕСТИТЬ НомераДат 
ИЗ 
    ВТДаты КАК Даты 
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДаты КАК ДатыДо 
        ПО (ДатыДо.Дата < = Даты.Дата) 
СГРУППИРОВАТЬ ПО 
    Даты.Дата 
; 

//////////////////////////////////////////////////////////////////////////////// 
ВЫБРАТЬ 
    МИНИМУМ(НомераДат.Дата) КАК ДатаНач, 
    МАКСИМУМ(НомераДат.Дата) КАК ДатаКон 
ИЗ 
    НомераДат КАК НомераДат 
СГРУППИРОВАТЬ ПО 
    ДОБАВИТЬКДАТЕ(НомераДат.Дата, ДЕНЬ, -НомераДат.Номер)
0
{2} Ожидается идентификатор

См. также

ПредставлениеДатыСинхронизации (БСП)

ПредставлениеЛокальнойДатыСоСмещением (БСП)

ОтносительнаяДатаСинхронизации (БСП)

Добавить к дате и разность дат

УстановитьУсловноеОформлениеПоляДата (БСП)

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

Цены на дату документа продажи

Модератору