sql-server - SSRS 如何在订阅中查看多值参数
问题描述
我试图从查询中获取值或指定值,只要参数是多值,我在尝试订阅时就看不到数据。
我的请求看起来像:
select id from employee where canal in(@canal)
我该怎么办,我完全被困住了,
当我做研究时,我看到了数据驱动的订阅,但我显然无法访问它,不知道这是否有帮助
解决方案
我首先要说对不起,这不是一个令人愉快的答案。您遇到了内置功能的限制。值得庆幸的是,有解决方法。
问题是您只能将 1 个值传递给数据驱动订阅。因此,您使用了逗号分隔的列表并获取查询/报告以解析出值。
如果您有或可以
Split
在数据库中创建一个函数,这是一个不错的选择。这将是一个表值的用户定义函数,并且已经有一些容易找到的示例。无论如何,此功能通常也适用于其他用例。这样,您的 SQL 将显示为:斯普利特的运河在哪里(@canal)
SSRS 非常适用于 SQL Server,但是当您使用 ODBC 连接时,参数支持是有限的。您可以使用在这些情况下所需的相同多值参数解决方法。
- 在“数据集属性”>“参数”选项卡中,使用这样的表达式将值组合成一个由逗号包围的逗号分隔字符串。
="," + 加入(参数!canal.Value,“,”) + “,”
- SQL 看起来像这样:
其中@like '%,' + canal + ',%'
基本上,这会逐行搜索字符串中包含的值。
无论哪种情况,数据驱动订阅设置中的查询都需要返回逗号分隔的字符串。然后您可以在报告参数值字段中选择该列。希望这可以帮助!
推荐阅读
- firebase - 删除firebase实时数据库中的消息反应原生
- c++ - 使用 C++ 中的指针在数组中的特定位置插入元素
- python - Python中线性回归的梯度下降实现有什么问题
- react-native - 子数据长度改变时组件状态抛出错误
- python - 怎么去掉透明背景?
- flutter - 支付插件(谷歌支付)+flutter_stripe 集成
- pdf - iText7页面大小不适用于段落
- google-apps-script - 超出 JDBC 配额限制
- batch-file - 在 Inno Setup 中创建 cmd 的快捷方式以执行批处理文件
- android - 如何确定 Flutter TextFormField 的高度?