有条件统计子表数据

首先必须说明的是,通过聚合函数统计子表数据,只能是无条件的。
但是实际应用的时候,有条件的统计是非常普遍的,怎样才能实现条件统计呢?
解决的思路是在子表增加表达式列,计算出需要统计的数据,然后在父表统计子表的这些表达式列。

下面用一个简单的例子来说明。

假定有产品和订单两个表:

这两个表通过产品编号建立了关联,假定关联的名称是"po",现在要求产品表能够自动统计出总销量、总销售额、已收款金额、未收款金额。
显然,按照常规的方法,是没有办法统计已收款金额和未收款金额的,但是我们可以绕个弯,在订单表增加一个表达式列,名称为“已付款金额”,将其表达式设置为:

IIF([已付款] = True,[金额],Null)

现在可以设置产品表中各列的表达式了:

列名 表达式
总销量 Sum(Child(po).数量)
总销售额 Sum(Child(po).金额)
已收款金额 Sum(Child(po).已付款金额)
未收款金额 [总销售额] - [已收款金额]

提示:实际使用的时候,可以将关联表的“已付款金额”列隐藏起来,因为将这一列呈现给最终用户并没有意义。


本页地址:http://www.foxtable.com/webhelp/topics/2472.htm