反馈已提交

网络繁忙

数据集中的排序

  • 文档创建者:lu123
  • 编辑次数:11次
  • 最近更新:Alicehyy 于 2021-03-16
  • 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. 模板下载

    已完成模板可参见:

    %FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\点击标题动态排序.cpt

    点击下载模板:点击标题动态排序.cpt

    4. 注意事项

    4.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

    附件列表


    主题: 报表专题
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭