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

Create a dataset which is a subset of another dataset in SSRS

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

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

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

简答

不,不可能。

备选

您可以修改查询以便 returns 一列用于填充 P1 参数,另一列用于填充 P2。示例:

select 'Foo' P1, 'Foo' P2
union all
select 'Bar', 'Bar'
union all
select 'Foobar', null

Returns:

P1       P2 
Foo      Foo
Bar      Bar
Foobar   null

使用 P1 列填充 P1 参数,使用 P2 列填充 P2 参数。

Note the subset column (P2 in my case) has less values than P1, if your parameter is set to allow NULL values, it will show the NULL option in select list otherwise it won't.

这个解决方案可能适合你,但如果你只需要数据集 运行s,我认为 SSRS 将 运行 查询每个参数,即使两个参数都是从一个数据集填充。

如果有帮助请告诉我。

我实现这一目标的一种方法是分组。如果数据集 A 已经包含您想要的所有内容,您可以使用标准 P2 = TRUE 对该数据集进行分组。这将数据集 A 分成两组——一组 P2 条件为真,另一组 P2 条件为假。

例如,考虑一个包含两列的数据集,LabelAmount。我想在 Label = "LabelNameOne" 处对我的数据进行子集化。我使用表达式 =Fields!Label.Value = "LabelNameOne" 在我的数据集周围创建了一个组,然后它会自动为我创建一个子集。假设您希望它在 运行 时间根据用户选择的参数进行过滤,您只需在分组表达式中加入该参数:=Fields!Label.Value = Parameters!P2.Value.