求和中的 BOUND 函数

当需要对一个或多个元素求和,其中一些元素具有定点读取选项时,使用"Bound"函数,以获得正确结果并避免在存在非同质操作数时像标准求和那样丢失数据。

此函数的语法为:

Bound( <边界表达式>, "名称", <求和>)

从技术上讲,使用此函数时,系统会根据 Bound 实用程序中指定的域,部署属于该求和的每个科目的域(域是科目所设置的各个维度的组合)。

假设我们有

[LO].@temp := [D00000];

[LO].[X00000] := Bound(@temp, "bound", @temp + [C00000](Dest1.[D11]));

即,Bound 表达式是 D00000 科目,并且数据库中存在的数据为:

输入科目 C00000

实体 科目 场景 类别 Dest1 Dest2 期间 金额
A00 C00000 2013BDG $AMOUNT D11 D21 01 50
A00 C00000 2013BDG $AMOUNT D11 D22 01 30

输入科目 D00000

实体 科目 场景 类别 Dest1 Dest2 期间 金额
A00 D00000 2013BDG $AMOUNT D13 D21 01 10
A00 D00000 2013BDG $AMOUNT D11 D22 01 20
A00 D00000 2013BDG $AMOUNT D12 D23 01 5

C00000 科目的域根据 BOUND 部署的域进行部署;结果为

实体 科目 场景 类别 Dest1 Dest2 期间 金额
A00 C00000 2013BDG $AMOUNT D13 D21 01 50
A00 C00000 2013BDG $AMOUNT D11 D22 01 30
A00 C00000 2013BDG $AMOUNT D12 D23 01 0

此时,我们进行的是同质操作数的标准求和,其结果为:

实体 科目 场景 类别 Dest1 Dest2 期间 金额
A00 X00000 2013BDG $AMOUNT D13 D21 01 50 +10
A00 X00000 2013BDG $AMOUNT D11 D22 01 30 + 20
A00 X00000 2013BDG $AMOUNT D12 D23 01 0 + 5