将第一个sql语句中的结果作为第二个sql的参数值

需求;
    报表多个数据集,第二个数据集的参数需要引用第一个数据集的结果集作为参数值过滤数据。

解决思路:
因为报表的数据集都是同时计算的,所以不能直接将ds1 的结果集作为ds2 的参数值。
所以使用动态参数的方式,利用query() 函数去解决。

示例说明:将demo数据库表中订单表通过货主名称过滤数据,然后查询对应的订单ID的  订单明细。
操作步骤:
1、先新建一个数据集ds1、设置方法如下图。并且在报表---参数里面增加参数 arg1。

2。新建ds2数据集,
          sql语句为:select  * from  订单明细  where  订单ID  in   (${m})      
       说明:1.因为${m}  是动态参数的写法,所以不需要设置数据集的参数。
                 2.因为ds1 过滤的数据可能不是一条,所以我们用in的字符串组的方式去过滤ds2的数据。
3、设置动态参数。
    

  写if的判断是为了ds2 数据集一个默认参数值。不然当参数为空的时候 会报错。

然后执行报表预览既可测试效果。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值