表达式可以用 * ,也可以用 StartFieldIndex To EndFieldIndex如 0 to 2的模式。
*表示每个字段进行聚集,0 to 2表示第一个到第三个字段求聚集。SelectOpt设置为16可以使得聚集的结果字段名和原始字段名一致。
例如,SumOf( * )可以对每个字段求和
SumOf(0 to 2)可以返回前三个字段的求和(返回三个求和值)
默认的情况下,SumOf( * )和SumOf(N1 to N2)返回的结果会按照正常模式以ExprN作为字段返回,例如"Expr1","Expr2"…,如果设置了SelectOpt(16)则可以以原始的字段名返回。例如:
a:=array(("abc":1,"bcd":2), ("abc":2,"bcd":3));
b:=select sumof( * ) from a end;//b的结果为array(("Expr1":3,"Expr2":5));
c:=select selectopt(16) sumof( * ) from a end;//c的结果为array(("abc":3,"bcd":5));
多字段聚集的时候,如果需要参与运算,用AggValue可以访问到当前运算的字段值,例如SumOf( *,AggValue>10)