创建一个数据集,该数据集是SSRS中另一个数据集的子集

时间:2016-03-25 03:00:21

标签: reporting-services ssrs-2008-r2

在我的SSRS报告中,我已经有一个数据集A(通过运行SQL脚本),参数P1使用A中的所有记录。现在我想获得A的子集,并使用另一个参数P2来引用它

是否可以同时获取数据集的整体和子集,并且只运行一次脚本?

我想创建共享数据集是一种可行的方法,但数据集A仅供本地使用,不应共享。

2 个答案:

答案 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"