Показать сообщение отдельно
Старый 08.06.2018, 07:49   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Дело в том, что validTimeStampEnabled = yes не добавляет в текст View желаемого фильтра по датам. Это свойство лишь протаскивает поля validFrom & validTo наружу View и сообщает ядру что с этим View нужно работать также как и с таблицей у которой включён validTimeStamp. При необходимости из такого View можно достать не только актуальные данные но и исторические. Также как и из оригинальной таблицы. Фильтрация по текущей дате добавляется ядром на последнем этапе, когда формируется уже запрос к самому View.
Не поможет также и попытка внедрить в текст View макро функции типа SysQueryRangeUtil ValidTimeState for views' queries

Для похожей задачи я использовал следующее допущение. Я предположил, что в моей validTimeStamp таблице не будет данных заведённых будущим числом и не будет безальтернативно закрытых позиций (когда validTo предыдущей записи закрыт прошедшей датой, а новая запись с актуальным validFrom отсутствует). Тогда актуальная строка, если она есть, будет иметь максимальный validFrom среди других строк относящихся к тому же ключу. Остаётся выбрать отдельным View максимальные значения и соединением с этим View отсечь все остальные. Вуаля, остались только актуальные записи! Максимальное значение выбирал через группировку и агрегатную функцию
За это сообщение автора поблагодарили: kitty (1), alex55 (1).