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

目录:

1. 概述编辑

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

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

2. 三种排序方式简介编辑

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

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

排序类型简介
数据集中的排序

通过 SQL 直接在数据库查询时排序

示例:

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

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

  • 多列排序:SELECT * FROM 销量 order by 英文简称,销量;数据先按「英文简称」列升序排序,「销量」列再按对应的「英文简称」升序排序

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

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

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

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

3.1 性能对比

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

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

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

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

2)有些计算是无法用 SQL 完成的;例如:某一列是通过其他数据列计算得出的,「数据集中的排序」将不再适用

高级排序

1)性能中等

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

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

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

3.2 覆盖场景对比

注:这三种排序方式,都可以在决策报表和普通报表中使用。

排序类型支持排序的字段可实现效果
数据集中的排序时间、日期、字符串、数字、布尔类型
  • 单列升序/降序

  • 多列排序(非动态)

  • 单列动态排序

高级排序

不支持动态排序,即点击表头进行排序的效果不能实现

10.0「高级排序」只支持单列排序

可以实现的效果:

  • 自定义排序

  • 单列排序

  • 汉字数字排序(结合其他功能实现的)

扩展后排序

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