首页 > 解决方案 > SSRS 如何在订阅中查看多值参数

问题描述

我试图从查询中获取值或指定值,只要参数是多值,我在尝试订阅时就看不到数据。
我的请求看起来像:

select id from employee where canal in(@canal)

在此处输入图像描述

我该怎么办,我完全被困住了,
当我做研究时,我看到了数据驱动的订阅,但我显然无法访问它,不知道这是否有帮助

标签: sql-serverreporting-services

解决方案


我首先要说对不起,这不是一个令人愉快的答案。您遇到了内置功能的限制。值得庆幸的是,有解决方法。

问题是您只能将 1 个值传递给数据驱动订阅。因此,您使用了逗号分隔的列表并获取查询/报告以解析出值。

  1. 如果您有或可以Split在数据库中创建一个函数,这是一个不错的选择。这将是一个表值的用户定义函数,并且已经有一些容易找到的示例。无论如何,此功能通常也适用于其他用例。这样,您的 SQL 将显示为:

    斯普利特的运河在哪里(@canal)

  2. SSRS 非常适用于 SQL Server,但是当您使用 ODBC 连接时,参数支持是有限的。您可以使用在这些情况下所需的相同多值参数解决方法。

    • 在“数据集属性”>“参数”选项卡中,使用这样的表达式将值组合成一个由逗号包围的逗号分隔字符串。

    ="," + 加入(参数!canal.Value,“,”) + “,”

    • SQL 看起来像这样:

    其中@like '%,' + canal + ',%'

基本上,这会逐行搜索字符串中包含的值。

无论哪种情况,数据驱动订阅设置中的查询都需要返回逗号分隔的字符串。然后您可以在报告参数值字段中选择该列。希望这可以帮助!


推荐阅读