历史版本23 :排序简介 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

在 FineReport 报表进行数据展示或图表展示时,经常会用到「排序」功能。一般在数据展示中应用比较多,图表中也会稍微涉及到一点。

本文将介绍 FineReport 支持的各类排序,以及对排序的各种应用进行简单介绍。

2. 三种排序方式对比编辑

FineReport 支持的三种排序类型分别为:数据集中的排序、高级排序、扩展后排序。这三种排序优缺点如下表所示:

注:高级排序是在报表执行前进行排序,扩展后排序是报表执行后再进行排序。

排序类型优点缺点
数据集中的排序性能最佳

1)所有计算都必须要在数据库中做,会导致 SQL 很复杂,难以维护

2)有些计算是无法用 SQL 完成的

高级排序

1)性能中等

2)可以基于「数据列」利用公式做一些稍微复杂些的排序

公式必须依赖于「数据列」,并且会导致公式的二次计算

扩展后排序最为灵活,满足目前所有的排序需求由于在扩展完成后进行排序,会对所有格子的位置进行调整,因此性能最差

结论:

从性能方面考虑:数据集中的排序>高级排序>扩展后的排序。

从覆盖场景方面考虑:扩展后的排序>高级排序>数据集中的排序。

3. 数据集中的排序编辑

数据集中的排序是指通过 SQL 直接在数据库查询时排序。

3.1 应用场景

「数据集中的排序」性能最佳,所有计算都必须要在数据库中做,会导致 SQL 很复杂,难以维护。因此建议仅使用 SQL 实现一些简单的,单一的「升序」或「降序」。

如果某一列是通过其他数据列计算得出的,「数据集中的排序」将不再适用。

3.2 功能简介

本节介绍「数据集中的排序」可实现的效果。具体使用请参见:数据集中的排序

注:可以在普通报表和决策报表中使用。

3.2.1 单列升降序

例如:

升序:SELECT * FROM 销量 order by 销量

降序:SELECT * FROM 销量 order by 销量 desc

3.2.2 多列排序

示例 SQL 语句为: SELECT * FROM 销量 order by 英文简称,销量

实现效果:数据先按「英文简称」列升序排序,「销量」列再按对应的「英文简称」升序排序。

3.2.3 动态排序

定义一个数据集参数,通过在标题添加「动态参数」实现点击标题动态排序。效果如下图所示:

1646359529531705.gif

4. 高级排序编辑

注:可以在普通报表和决策报表中使用。

「高级排序」是指:报表根据某「数据列」设置的公式和排列顺序进行的排序。相当于扩展前排序,依赖于「数据列」。

高级排序必须在「最父格」单元格设置,例如 C1 单元格的左父格是 B1,B1 单元格的左父格是 A1,那么 A1 即为「最父格」。

「高级排序」10.0 只支持单列排序,详情请参见:高级排序

可以实现的效果(单列排序):

  • 数据列排序

  • 自定义排序

5. 扩展后排序编辑

5.1 应用场景

「扩展后排序」在制作报表过程中可以实现多种排序需求,是最灵活的排序方式,但由于在扩展完成后进行排序,会对所有格子的位置进行调整,因此性能最差,建议在 高级排序 无法实现的情况下再使用「扩展后排序」。

5.2 功能简介

注:可以在普通报表和决策报表中使用。

具体功能介绍及使用请参见:扩展后排序

可以实现的效果(结合其他功能实现的):