• 同一报表,根据不同条件,执行不同Sql


    在某些ERP报表系统中,数据的存储是按照账套存储的,每年一个账套,对应一个数据库,这样在查询报表时,Sql语句就需要动态的从相应的数据中查询数据。
    也有需要在同一张样式的报表中,通过不同的条件,分别查看同一样式,不同聚合维度的数据等场景。
    类似以上的场景,就需要根据参数条件,动态的执行对应的Sql语句。

    场景一:根据选择不同年度,从不同账套(即数据库)查询数据
    例如:有三年的账套,分别对应三个数据库,2017、2018、2019,三个数据库查询的表结构一样。
    根据选择年份,从不同数据库查询数据。


    1.创建报表:使用完整的sql语句创建数据集获取结构,验证数据。



    2.添加报表参数:查询年度:cyear,可选数据手动添加3个年份;

    3.重新编辑数据集:使用动态Sql,通过参数值来控制数据库的名称。
    动态数据集查询语句:="select * from  [" & Parameters!cyear.Value & "].dbo.sales_订单",之后点击确定。
    可以将改语句放到文本框表达式中,验证语句输出结果,将结果复制到数据库管理工具执行,验证SQL正确性。


    4.验证效果。
    在参数中选择不同年份时,从不同的数据库查询sql。
    选2017时,查询数据库【2017】中的sales_订单表数据。

    选2018时,查询数据库【2018】中的sales_订单表数据。


    场景二、不同的查询维度,执行不同的sql语句。
    例如:查询周期参数值选择【天】时,查看每日明细;参数值为【月】时,查看每月汇总。

    1.完整sql创建数据集获取结构,并绑定表格。
    select 订购日期,运货费 from sales_订单



    2.添加查询周期参数:每日、每月、每季度,并设置可选值。


    3.修改数据集,改为动态参数。
    此处,根据不同的参数值,执行不同的sql语句,有两种实现方法:
    函数1.IIF函数
    数据集写法:
    =IIF(Parameters!cxzq.Value="每日","select convert(varchar(10),订购日期,112) 订购日期,运货费 from sales_订单",IIF(Parameters!cxzq.Value="每月","select convert(varchar(2),month(订购日期)) + '月' as 订购日期,sum(运货费) 运货费 from sales_订单 group by month(订购日期) order by month(订购日期) "," select datename(quarter,订购日期) + '季度' as 订购日期,sum(运货费) 运货费 from sales_订单 group by datename(quarter,订购日期) order by datename(quarter,订购日期)"))


    函数2.Switch函数
    数据集写法:
    =Switch(Parameters!cxzq.Value="每日","select convert(varchar(10),订购日期,112) 订购日期,运货费 from sales_订单",Parameters!cxzq.Value="每月","select convert(varchar(2),month(订购日期)) + '月' as 订购日期,sum(运货费) 运货费 from sales_订单 group by month(订购日期) order by month(订购日期)  ",Parameters!cxzq.Value="每季","select datename(quarter,订购日期) + '季度' as 订购日期,sum(运货费) 运货费 from  sales_订单 group by datename(quarter,订购日期) order by datename(quarter,订购日期)")



    函数的意思类似,就是分别根据不同的参数值,决定返回的sql语句。

    4.预览效果:选择不同参数值,查看报表。
    每日:


    每月:


    每季:

  • 相关阅读:
    07.数组和方法
    05.运算符
    04.变量和常量
    专访Vue作者尤雨溪:Vue CLI 3.0重构的原因
    深入理解JavaScript的设计模式
    如何用纯 CSS 创作文本滑动特效的 UI 界面
    如何用纯 CSS 为母亲节创作一颗像素画风格的爱心
    如何用纯 CSS 创作一种有削铁如泥感觉的菜单导航特效
    如何用纯 CSS 创作 404 文字变形为 NON 文字的交互特效
    如何用纯 CSS 创作炫酷的同心矩形旋转动画
  • 原文地址:https://www.cnblogs.com/edoo/p/13446654.html
Copyright © 2020-2023  润新知