历史版本10 :数据集中的排序 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

数据集中的排序是指通过 SQL 直接在数据库查询时排序。此方法性能最佳,但所有计算都必须要在数据库中做,会导致 SQL 很复杂,难以维护,另外有些计算是无法用 SQL 完成的。因此建议仅使用 SQL 实现一些简单的,单一的「升序」或「降序」。

本文将介绍在定义数据集时使用 SQL 语句可以设置的排序类型。

1.2 ORDER BY 关键字

ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。默认按照「升序」进行排序,即 ASC 关键字;如果需要按照「降序」排序,可以使用 DESC 关键字。

例如:

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

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

2. 示例编辑

2.1 升序

新建普通报表,新建「数据库查询」,输入 SQL 语句为:SELECT * FROM 销量 order by 销量

点击预览,即可看到数据按「销量」列升序排序,如下图所示:

Snag_18c406e.png

2.2 降序

新建普通报表,新建「数据库查询」,输入 SQL 语句为:SELECT * FROM 销量 order by 销量 desc

点击预览,即可看到数据按「销量」列降序排序,如下图所示:

Snag_18f0f7c.png

2.3 多列排序

新建普通报表,新建「数据库查询」,输入 SQL 语句为:SELECT * FROM 销量 order by 英文简称,销量

点击预览,即可看到数据先按「英文简称」列升序排序,「销量」列再按对应的「英文简称」升序排序,如下图所示:

Snag_1956aae.png

2.4 动态排序

定义一个数据集参数,通过在标题添加「动态参数」实现动态排序。

2.4.1 数据准备

新建普通报表,新建数据库查询 ds1,SQL 查询语句为:SELECT * FROM 销量 where 地区='华北' order by 销量 ${a}

定义了一个数据集参数 a,用来表示排序 asc 或 desc 。如下图所示:

注:如果需要两个字段均设置动态参数,SQL 语句可修改为:SELECT * FROM 销量 where 地区='华北' order by 销量 ${a},销售员 ${a} 

1615793412809068.png

2.4.2 设计报表

将数据集中的数据拖入表格,设置 A2 单元格数据设置为「列表」,报表样式如下图所示:

1615793577646814.png

2.4.3 添加动态参数

选中「销量」标题所在 E1 单元格,添加一个「超级链接>动态参数」,参数即为在 SQL 中设置的参数 a ,参数值输入公式:if(a="desc","asc","desc")

注:a 默认为 asc。

1615793912943274.png

2.4.4 效果预览

1)PC 端

保存报表,点击「分页预览」,效果如下图所示。

1615792634708798.gif

2)移动端

App 端和 HTML5 端均支持,效果如下图所示:

814758AA-5C13-4255-A8D4-7495D6F7640D.GIF

3. 注意事项编辑

3.1 MySQL 中文排序无效

如果 MySQL 数据库无法实现按中文拼音首字母排序,需要看一下表字段是否使用的是 UTF-8 编码,如果使用的是 UTF-8 编码,则需要使用 MySQL 的 convert 方法转换成 GBK 编码进行排序。且前提是 MySQL 安装了 GBK 字符集,不然会报错。

SQL 语句如下:

升序:SELECT * FROM 销量 order by convert(英文简称 using gbk)

降序:SELECT * FROM 销量 order by convert(英文简称 using gbk) desc