[]
        
在线Demo 免费试用
(Showing Draft Content)

动态SQL查询

1. 概述

1.1 功能概述

在数据分析和报表开发中,我们通常通过SQL查询语句从数据库中提取数据来创建数据集。传统的静态SQL查询语句是固定不变的,而动态SQL查询则能够根据用户输入或业务场景的变化实时调整查询逻辑,实现灵活的数据获取。

如下图所示,当用户在报表查看界面上选择不同的统计维度(如切换查询维度)时,系统会自动生成相应的动态SQL语句,从而从数据库中检索出符合当前筛选条件的数据结果。这种智能化的数据获取方式大大增强了报表的交互性和实用性。

动态SQL查询

下面我们具体讲解如何用动态SQL实现图中的交互式查询效果。

2. 操作步骤

type=info

提示: 本节内容涉及到报表内嵌数据集的数据过滤功能,相关介绍请参见数据集过滤

2.1 新建报表,添加报表参数

  1. 如下图所,在报表设计器中,添加名为“统计范围”的报表参数,并设置 参数名称提示文本、数据类型可用数据

    PixPin_2025-06-25_10-17-36

2.2 添加内嵌数据集

  1. 在报表设计器中,添加新建数据集(内嵌数据集),进入数据集编辑界面。

    PixPin_2025-06-25_10-21-59

2.3 使用静态SQL语句获取字段列表

  1. 在数据集编辑界面,使用sql语句验证成功后即可获取字段列名,本例中使用的SQL语句如下:

    select 销售大区 as 地区名称, count(订单编号) as 订单量, sum(订单金额) as 销售额 from 销售明细 group by 销售大区

    PixPin_2025-06-25_10-25-43

    type=info

    提示: 此处没有直接使用动态SQL查询语句是因为动态SQL语句不能直接获取到数据库中的字段列表,我们需要先通过静态SQL将需要的字段获取到,然后再改为动态SQL语句。

2.4 将静态SQL语句修改为动态SQL语句

  1. 当使用静态SQL获取字段后,此时可以将静态SQL修改为动态SQL以实现本例的效果,输入动态SQL语句后,单击确定按钮。本例中使用的动态SQL语句如下:

    select {Switch(@统计范围 = "大区", "销售大区", @统计范围 = "省份", "销售省份", @统计范围 = "城市", "销售城市")} as 地区名称, count(订单编号) as 订单量, sum(订单金额) as 销售额 from 销售明细 group by {Switch(@统计范围 = "大区", "销售大区", @统计范围 = "省份", "销售省份", @统计范围 = "城市", "销售城市")}

    PixPin_2025-06-25_10-28-42

2.5 添加文本框组件显示 SQL 语句

  1. 在报表设计器的画布区域中添加一个文本框组件,将动态 SQL 语句粘贴到文本框中,这样做是为了方便我们查看实际进行数据查询的 SQL 语句。

    PixPin_2025-06-25_10-30-21

2.6 制作报表标题

  1. 在报表设计器的画布区域中添加两个文本框组件,分别输入“ 全国各 ”和“ 销售统计 ”字样并调整字体样式。然后将报表参数拖拽至两个文本框之间,并调整字体样式,使其动态显示报表参数的值。具体如下图所示。

    PixPin_2025-06-25_10-49-49

2.7 添加图表组件

  1. 在报表设计器的画布区域中添加柱形图组件,并绑定数据。

    PixPin_2025-06-25_10-54-42

  2. 选中左侧组件工具箱的元素管理,选中图表顶部标题,然后在右侧属性列表找到标题属性,并将标题内容删除。

    PixPin_2025-06-25_10-56-04

  3. 选中图表分类组绑定的字段,在右侧属性列表找到数据排序属性,修改图表的排序规则,按销售额大小以降序排列。

    PixPin_2025-06-25_10-58-25

2.8 添加表格组件

  1. 在报表设计器的画布区域的柱形图组件后添加一个表格进,绑定数据集中的数据字段并适当调整表格宽度。

    PixPin_2025-06-25_11-01-14

  2. 选中表格的“ 销售额 ”明细单元格,调整数据格式为货币格式,如下图所示。

    PixPin_2025-06-25_11-02-22

2.9 预览报表

  1. 在报表设计区域,单击预览按钮预览报表内容。

    PixPin_2025-06-25_11-03-53

  2. 在报表预览界面,当我们选择统计范围为“ 大区 ”时,SQL查询语句即为:“select 销售大区 as 地区名称, count(订单编号) as 订单量, sum(订单金额) as 销售额 from 销售明细 group by 销售大区“,此时“ 地区名称 ”实际为“ 销售大区 ”,并且柱形图的数据会按照“ 销售大区 ”进行分组统计显示。

    PixPin_2025-06-25_11-07-35

  3. 在报表预览界面,当我们选择统计范围为“ 省份 ”时,SQL查询语句即为:“select 销售省份 as 地区名称, count(订单编号) as 订单量, sum(订单金额) as 销售额 from 销售明细 group by 销售省份“,此时“ 地区名称 ”实际为“ 销售省份 ”,并且柱形图的数据会按照“ 销售省份 ”进行分组统计显示。

    PixPin_2025-06-25_11-08-05