软件开发 - 一定要会做的30张报表 - 之二 - 分组报表 中,讲了基本的分组。
然而,除了这种标准的分组,实际需求中还有很多不规则的分组。看下面的例子:

这张报表,在数据库中应该保存的是员工所在的城市、工资数额,然后在报表中统计各个工资段的人数。
粗看它有点象一个分组报表,或者有点象交叉表,但实际上,基于城市的分组计算确实比较简单,但各工资段的人数统计却不那么简单。
原因就在于,在数据库中,并不会象城市那样,有一个字段存着员工的工资是属于哪个工资段(如果是那样,简单做一个交叉表就可以了)。而且,实际上很多这种统计,如何分段、分几段都是动态的,而不是预先定好的。典型的象ABC分析就是这种情况。
这种不规则的分组,如何实现呢?
1、可以加一个字段,或者做一个临时表,在生成报表前,先算一下。这个方法放之四海而皆准,但显然很麻烦。而且还有很多时候,数据库不是谁都能动的。
2、也可以写存储过程或者弄SQL,也可以理解为形成一个类似于内存中的临时表。不过这种写起来会更复杂一些,另外如果分段方法变了,改起来也比较麻烦。
3、新的非线性报表模型,支持这种不规则分组,相应的产品实现起来就很简单了。可以用一个简单的函数,就象用GROUP一样,即完成这种不规则分组。 |