求和中的 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 |