Суммирует все или определенные числовые поля в текущей выбранной таблице.

SUM [eExpressionList]   [Scope] [FOR lExpression1] [WHILE lExpression2]
   [TO MemVarNameList | TO ARRAY ArrayName]   [NOOPTIMIZE]

Параметры

eExpressionList

Определяет одно или несколько полей или выражение для поля для суммирования. Если вы опускаете выражение для списка полей, все числовые поля будут суммированы.

Score

Определяет диапазон записей, включаемых в сумму. Score может включать предложения: ALL, NEXT nRecords, RECORD nRecordNumber и REST. Более подробно о предложениях области видимости смотрите Scope Clauses.

По умолчанию используется предложение ALL, суммирующее все записи.

FOR lExpression1

Определяет, что только те записи, для которых логическое выражение lExpression1 оценивается в "истину" (.T.), включаются в сумму. Включение FOR делает возможным включать в суммирование записи, отфильтрованные от ненужных записей.

Rushmore-оптимизация оптимизирует команду SUM ... FOR, если lExpression1 является оптимизируемым выражением. Для получения наилучших результатов используйте оптимизируемое выражение в предложении FOR.

Более подробно о Rushmore-оптимизации смотрите SET OPTIMIZE Command and Using Rushmore Query Optimization to Speed Data Access.

WHILE lExpression2

Определяет условие, при котором записи текущей таблицы включаются в сумму до тех пор, пока логическое выражение lExpression2 оценивается в "истину" (.T.).

TO MemVarNameList

Сохраняет каждую сумму в переменную. Если вы определили переменную в MemVarNameList, которая не существует, Visual FoxPro автоматически создает ее. Разделяйте имена переменных в списке запятой.

TO ARRAY ArrayName

Сохраняет суммы в массиве переменных. Если массив, который определен в SUM, не существует, Visual FoxPro создает его автоматически. Если массив существует и слишком мал, чтобы содержать все суммы, размер массива увеличивается автоматически, чтобы разместить суммы.

NOOPTIMIZE

Запрещает Rushmore-оптимизацию в SUM.

Более подробно смотрите SET OPTIMIZE Command и Using Rushmore Query Optimization to Speed Data Access.

Expand imageПример

Следующий пример показывает суммирование в in_stock и on_order полей в таблице products вместе с суммированием двух итогов.

  CopyCode imageCopy Code
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE products  && Opens Products table

SUM in_stock, on_order, in_stock+on_order ;
   TO gnInStock, gnOnOrder, gnUnits

CLEAR
?
? 'Total in stock : ', gnInStock  && Displays 3119.00
? 'Total on order:  ', gnOnOrder  && Displays 780.00
? 'Total # units :  ', gnUnits  && Displays 3899.00

Expand imageСмотрите также