有条件统计子表数据
首先必须说明的是,通过聚合函数统计子表数据,只能是无条件的。
但是实际应用的时候,有条件的统计是非常普遍的,怎样才能实现条件统计呢?
解决的思路是在子表增加表达式列,计算出需要统计的数据,然后在父表统计子表的这些表达式列。
下面用一个简单的例子来说明。
假定有产品和订单两个表:
这两个表通过产品编号建立了关联,假定关联的名称是"po",现在要求产品表能够自动统计出总销量、总销售额、已收款金额、未收款金额。
显然,按照常规的方法,是没有办法统计已收款金额和未收款金额的,但是我们可以绕个弯,在订单表增加一个表达式列,名称为“已付款金额”,将其表达式设置为:
IIF([已付款] = True,[金额],Null)
现在可以设置产品表中各列的表达式了:
列名 | 表达式 |
总销量 | Sum(Child(po).数量) |
总销售额 | Sum(Child(po).金额) |
已收款金额 | Sum(Child(po).已付款金额) |
未收款金额 | [总销售额] - [已收款金额] |
提示:实际使用的时候,可以将关联表的“已付款金额”列隐藏起来,因为将这一列呈现给最终用户并没有意义。