Движения периодического регистра сведений без повторов

FastCode 1530 12 22 67

Часто бывает так, что одно и то же значение устанавливается в периодическом регистре сведений несколько раз подряд. На примере таблицы дат и цен следующий запрос позволяет избавиться от ненужных повторов:

Автор: ildarovich

ВЫБРАТЬ
    Дано.Дата КАК Дата,
    Дано.Цена
ИЗ
    Дано КАК Дано
        ЛЕВОЕ СОЕДИНЕНИЕ Дано КАК Слева
        ПО (Слева.Дата < Дано.Дата)
СГРУППИРОВАТЬ ПО
    Дано.Дата,
    Дано.Цена
ИМЕЮЩИЕ
    ЕСТЬNULL(МАКСИМУМ(Слева.Дата), 0) <> ЕСТЬNULL(МАКСИМУМ(ВЫБОР Слева.Цена КОГДА Дано.Цена ТОГДА Слева.Дата КОНЕЦ), 1)

//Или вот еще решение через коррелированный запрос (всегда требуется тестировать производительность таких вариантов!)

ВЫБРАТЬ
    Дано.Дата КАК Дата,
    Дано.Цена
ИЗ
    Дано КАК Дано
ГДЕ
    НЕ Дано.Цена В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    Слева.Цена
                ИЗ
                    Дано КАК Слева
                ГДЕ
                    Слева.Дата < Дано.Дата
                УПОРЯДОЧИТЬ ПО
                    Слева.Дата УБЫВ)
0
{2} Ожидается идентификатор

См. также

Запись в регистр сведений (периодический, независимый)

ПриОпределенииРегистровСДвижениями (БСП)

Добавить движение в регистр накопления

Создать запись в регистре сведений

Получение данных из регистра сведений не запросом

Срезы последних (интерполяция периодических сведений)

ВыбратьРегистраторыРегистраДляОбработки (БСП)

Временная таблица периодического регистра с периодами

ОбновитьЗаписьВРегистрСведений (БСП)

Модератору