SSRS 多值参数转多行 table
SSRS multivalue parameter to multi-row table
我想生成带有多值参数的多行 table。
我现在唯一能做的就是将指定的参数传递到每一行,如下所示:
=Parameters!P.Value(0)
=Parameters!P.Value(1)
...
=Parameters!P.Value(n)
有没有办法动态地做到这一点?
有趣的问题,我唯一能想到的是将参数数组转换为数据集中的xml,然后通过xml个节点将其转换为table。
数据集参数(我们称之为@par)应该在表达式中设置为:
= "<n>" + join(Parameters!P.Value,"</n><n>") + "</n>"
那么数据集的查询将是这样的:
declare @parxml xml = @par
Select p.query('./text()')
from @parxml.nodes('/n') as T(p)
这将提供一个 table 每个选定的参数值一行。
我终于找到了一个好的解决方案。
(记住 P 是 multi-value-parameter .. es. P=a;b;c;d;e)
首先添加一个指向 table(数据库) 的数据集,该数据集由数字渐进字段 (id) 组成,如下所示:(记得加载 table 行数 >=到你的 multi-value-parameter 中可能的值数量......或者简单地加载 10000 行,我认为你会没事的)
然后在报告中添加一个 table,其中包含:字段 id(来自 Dataset1)和以下表达式(代表您的参数 P):
=Parameters!P.Value(Fields!id.Value)
现在,如果您 运行 报告,您将得到如下内容:
要删除#Error 行,只需像下面那样过滤整个 table,就大功告成了!
我想生成带有多值参数的多行 table。
我现在唯一能做的就是将指定的参数传递到每一行,如下所示:
=Parameters!P.Value(0)
=Parameters!P.Value(1)
...
=Parameters!P.Value(n)
有没有办法动态地做到这一点?
有趣的问题,我唯一能想到的是将参数数组转换为数据集中的xml,然后通过xml个节点将其转换为table。
数据集参数(我们称之为@par)应该在表达式中设置为:
= "<n>" + join(Parameters!P.Value,"</n><n>") + "</n>"
那么数据集的查询将是这样的:
declare @parxml xml = @par
Select p.query('./text()')
from @parxml.nodes('/n') as T(p)
这将提供一个 table 每个选定的参数值一行。
我终于找到了一个好的解决方案。
(记住 P 是 multi-value-parameter .. es. P=a;b;c;d;e)
首先添加一个指向 table(数据库) 的数据集,该数据集由数字渐进字段 (id) 组成,如下所示:(记得加载 table 行数 >=到你的 multi-value-parameter 中可能的值数量......或者简单地加载 10000 行,我认为你会没事的)
然后在报告中添加一个 table,其中包含:字段 id(来自 Dataset1)和以下表达式(代表您的参数 P):
=Parameters!P.Value(Fields!id.Value)
现在,如果您 运行 报告,您将得到如下内容:
要删除#Error 行,只需像下面那样过滤整个 table,就大功告成了!