报表数据集字段值按指定顺序排序

需求说明:

以润乾报表设计器自带 demo 数据源为例。

从“订单”表取数,完成按地区 group 后,地区想按照指定的顺序(“华北、华东、华南、华中、东北、西北、西南”)排序。

分析测试:

1、 Sql:SELECT 货主地区,count(订单 ID) 订单个数 FROM 订单 where 货主地区 is not null group by 货主地区, 结果为:

1png

2、 要求按照“华北、华东、华南、华中、东北、西北、西南”的顺序排序。

3、 即便加上 order by 货主地区,也无法达到想要的效果。

升序! 
2png
    降序!

3png

怎么办?抓狂

接下来,看集算器如何轻松解决。

只需一个 align 函数,简单说明(详细的参考集算器函数说明文档,搜索”align”):

P. align()

描述:

把排列按照另一个序列进行排序 / 对齐

语法:

P.align(A:x,y), x,y 省略则以 P 当前记录与 A 中成员对齐
P.align(n,y), 等同于 P.align(to(n),y),支持 @r

备注:

通过关联字段 x 和 y 将 P 的记录按照 A 对齐。对着排列 P 计算 y 的值,计算结果和 A 中的 x 的值相等则表示两者对齐。

具体做法:

1、 采用集算器脚本完成取数

4png

2、 P.align() 函数帮助按指定顺序对齐

A3 中表达式

5png

A3 结果为:

6png

从以上结果可以看出,一句代码即可完成按指定顺序排序。

更多特殊报表格式类问题请查看:报表样式汇总导航
* 动态列报表的制作
* 在列数固定的报表中逐格横向填充数据并折行
* 如何通过报表单元格右键控制报表跳转到不同链接地址
* 报表也可以根据单元格计算后结果进行排序
* 按段分组报表制作