复杂多数据源报表join后再计算的简便方法(二)

2015-01-25 19:30:30 · 作者: · 浏览: 13
销售额-上一日的销售额)/上一日的销售额”。可以看到,集算器用subtotal[-1]来表示上一日的销售额,可以轻松进行相对位置的计算。

值得注意的是,由于第一条记录没有对应的“上一日的销售额”,因此销售额增长率为Null。

?

A7=A6.(~.select(#!=1))

这句代码在A6的基础上去掉每组数据的第一条记录(因为第一条记录的增长率为无意义的Null)。

\

?

代码中的函数select可以进行查询,“#”表示循环序号,“#!=1”即序号不等于1。同样的功能也可以用函数delete来实现,但性能稍低,这是因为函数select只返回引用,而delete需要改变实际数据。

?

A8=A7.(~.top(-rate;3))

上述代码可以计算出每个销售员销售额增长率最大的三天对应的记录。函数Top可以根据某字段(或某几个字段的表达式)取出前N条记录。计算结果如下:

\

?

A9=A8.union()

上述代码将A8中的各组数据合并起来,形成新的二维表A9,如下:


\

?

A10=A9.new(SellerId.Name:Name,OrderDate,subtotal,rate)

上述代码从A9中取出需要的字段,即本案例最终计算结果。

\

?

result A10

上述代码将A10中的二维表返回报表工具。报表的设计可以参考前一个案例,这里不再赘述。