在我的SSRS报告中,我已经有一个数据集A(通过运行SQL脚本),参数P1使用A中的所有记录。现在我想获得A的子集,并使用另一个参数P2来引用它
是否可以同时获取数据集的整体和子集,并且只运行一次脚本?
我想创建共享数据集是一种可行的方法,但数据集A仅供本地使用,不应共享。
答案 0 :(得分:3)
简短回答
不,这是不可能的。
<强> 替代 强>
您可以修改查询,以便返回一列填充P1参数,其他列填充P2。例如:
select 'Foo' P1, 'Foo' P2
union all
select 'Bar', 'Bar'
union all
select 'Foobar', null
返回:
P1 P2
Foo Foo
Bar Bar
Foobar null
使用P1
列填充P1
参数,使用P2
填充P2
参数。
注意子集列(在我的情况下为P2)的值小于P1, 如果您的参数设置为允许
NULL
值,则它将显示NULL 选择列表中的选项,否则不会。
此解决方案可能对您有用,但如果您需要数据集只运行一次我不确定,我认为SSRS将为每个参数运行查询,即使两个参数都是从一个数据集填充的。
如果有帮助,请告诉我。
答案 1 :(得分:0)
我实现这一目标的一种方法是分组。如果数据集A已包含您想要的所有内容,则可以使用条件P2 = TRUE
对该数据集进行分组。这将数据集A分成两组 - 一组P2条件为真,另一组P2条件为假。
例如,考虑一个包含两列{,1}}和Label
的数据集。我希望将数据子集到Amount
。我在表达式Label = "LabelNameOne"
的数据集周围创建了一个组,然后自动为我创建一个子集。假设您希望它在运行时过滤用户选择的参数,您只需将该参数放在分组表达式中:=Fields!Label.Value = "LabelNameOne"
。