На платформе 8.3 появилась давно возможность нумерации строк прямо в запросе, все хорошо, но нумерация идет от 1, а мне нужно было от нуля. Решение оказалось банальным, равно как и сортировка записей во временной таблице:
ВЫБРАТЬ ПЕРВЫЕ 1000000
ЧекиУчастников.Участник КАК Участник,
ЧекиУчастников.ДатаПокупки КАК ДатаПокупки,
АВТОНОМЕРЗАПИСИ() КАК НомерШанса
ПОМЕСТИТЬ ВРЧекиУчастников
ИЗ
РегистрСведений.ЧекиУчастников КАК ЧекиУчастников
ГДЕ
ЧекиУчастников.ДатаПокупки МЕЖДУ &ДатаНачалаВыборки И &ДатаКонцаВыборки
УПОРЯДОЧИТЬ ПО
ДатаПокупки
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЧекиУчастников.Участник КАК Участник,
ЧекиУчастников.ДатаПокупки КАК ДатаПокупки,
ЧекиУчастников.НомерШанса - 1 КАК НомерШанса
ИЗ
ВРЧекиУчастников КАК ЧекиУчастников
Больше миллиона у меня записей не будет, поэтому и такое ограничение. Так как нумерация идет с единицы, то я уменьшаю ее на единицу.
Отмечу что в серверных БД на PostgreSQL автонумерация работает криво, может начать нумерацию от балды. Удаление временной таблицы не помогает, может помочь создание разных ВТ (например уникальность имени от полной даты с временем)
Комментариев нет:
Отправить комментарий