ItBJLan 2020-06-17
SQL 中分组是很常见的运算,是将一个集合按照某种规则拆分成若干个子集,常常伴随着对子集的进一步汇总计算。
报表中我们通常称这种分组为“等值分组”。实现这种等值分组也很容易,只需要按照指定字段做 group(), 再针对分组做聚合运算即可。如下图 1:
关于等值分组图中可以看到对应设置的每个表达式,这里不多做说明,重点看下面
其他分组
举例:
有时除了上述等值分组外,我们还希望做到部分分组(又称不完全分组,即不把所有的记录用于分组,只保留用户关心的分组项,其余的组全部归并成一组)。
多数情况下 SQL 对于这类计算经过子查询或者存储过程建立临时表,也可以实现,但会麻烦一些。
下面主要看一下润乾报表如何实现不完全分组:
要求保留原有分组报表(上图 1)的妙生、为全供应商组,其他的组全部归并为一组称为“其它”。
设计界面修改如下:
具体处理:
在原分组报表(上图 1)的基础上,新增两行用于其它组呈现统计
A5 单元格表达式增加过滤及排序,表达式为:=ds1.group(供应商 ID, 供应商 ID==3 or 供应商 ID==4; 供应商 ID:1)
新增行 7-8,合并 A7-A8 单元格,表达式为:其它
B7 表达式为:=ds1.group(类别 ID, 供应商 ID!=3 and 供应商 ID!=4; 类别 ID:1),只保留供应商为妙生、为全的
G8 表达式为:=sum(E7*G7,B7{}),针对其他分组计算小计
新增行部分其他单元格表达式及设置可直接复制 C5-G5 单元格的设置。
Web 预览效果:
可以看出,润乾报表处理这种问题很巧妙,仅使用了其内置函数 select 和 group 设置过滤条件参数,就可以在进行选出或者分组的时候,过滤掉无关的记录,仅对部分记录进行分组,达到不完全分组统计的效果。
之后还可以对同一个数据集重复进行多次的分组或者选出、汇总操作,从而可以实现很复杂的分组报表。
不完全分组具体实现步骤可参考:不完全分组报表制作步骤
更多推荐: