Вычисляет итоговые суммы по числовым полям в текущей таблице.
TOTAL TO TableName ON FieldName [FIELDS FieldNameList] [Scope] [FOR lExpression1] [WHILE lExpression2] [NOOPTIMIZE] |
Параметры
- TableName
-
Задает имя таблицы, в которую будут записываться итоговые суммы. Если заданной таблицы не существует, Visual FoxPro создает ее. Если таблица существует и установка SET SAFETY имеет значение ON, Visual FoxPro спрашивает, собираетесь ли вы перезаписать существующую таблицу. Если действует SET SAFETY OFF, таких вопросов не поступает, а выходная таблица перезаписывается.
- FieldName
-
Задает поле, по которому группируются итоговые суммы. Таблица должна быть отсортирована по этому полю, или оно должно служить выражением ключа для открытого индекса или тега индекса.
- FIELDS FieldNameList
-
Задает поля, которые подлежат суммированию. Имена полей в списке следует разделять запятыми. Если опустить предложение FIELDS, по умолчанию суммируются все числовые поля.
- Scope
-
Задает диапазон суммируемых записей. По умолчанию областью действия команды TOTAL являются все записи (предложение ALL). Диапазон задается следующими предложениями: ALL, NEXT nRecords, RECORD nRecordNumber, и REST.
Подробнее о предложениях диапазона смотрите тему Выражение Scope.
- FOR lExpression1
-
Задает критерий, в соответствии с которым в суммировании участвуют только записи, удовлетворяющие логическому условию lExpression1.
Запрос, созданный командой TOTAL ... FOR, может быть оптимизирован по технологии Rushmore, если lExpression1 является оптимизируемым выражением. Для получения наивысшей производительности используйте в предложении FOR оптимизируемое выражение.
Для получения дополнительной информации, смотрите Команда SET OPTIMIZE и Использование оптимизации запросов Rushmore для ускорения доступа к данным.
- WHILE lExpression2
-
Задает условие, согласно которому записи текущей таблицы участвуют в суммировании до тех пор, пока логическое выражение lExpression2 остается истинным (.T.).
- NOOPTIMIZE
-
Блокирует оптимизацию команды TOTAL по технологии Rushmore.
Для получения дополнительной информации, смотрите Команда SET OPTIMIZE и Использование оптимизации запросов Rushmore для ускорения доступа к данным.
Замечания
Таблица в выбранной в данный момент рабочей области должна быть отсортирована или проиндексирована. Для каждой группы записей, имеющих общее значение поля или уникальное значение ключа индекса, вычисляется отдельная итоговая сумма. Результаты помещаются в записи второй таблицы. В этой таблице для каждого общего значения поля или уникального значения ключа индекса создается одна запись.
Если числовые поля второй таблицы не в состоянии вместить по ширине полученные суммы, может произойти числовое переполнение. В этом случае Visual FoxPro сохраняет наиболее старшие части итоговых сумм. Если поле слишком мало, чтобы хранить итоговую сумму, происходит следующее:
-
Десятичные знаки дробной части отбрасываются, а оставшаяся часть суммы округляется.
-
Если сумма по-прежнему не вмещается в поле, используется экспоненциальное представление, при условии, что поле итоговой суммы содержит не менее семи цифр.
-
В противном случае ѕ содержимое поля замещается звездочками.
Смотрите также
Справочное руководство
Команда AVERAGEКоманда CALCULATE
Команда INDEX
Команда SORT
Команда SUM
Прочие ресурсы
Команды (Visual FoxPro)Справочное руководство по языку (Visual FoxPro)