【问题标题】:Create a dataset which is a subset of another dataset in SSRS创建一个数据集,它是 SSRS 中另一个数据集的子集
【发布时间】:2016-03-25 03:00:21
【问题描述】:

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

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

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

【问题讨论】:

    标签: reporting-services ssrs-2008-r2


    【解决方案1】:

    简答

    不,这是不可能的。

    替代方案

    您可以修改查询,使其返回一列用于填充 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.减慢查询的执行时间。2.返回冗余记录,因为P2数据集是P1的一个子集,特别是需要返回多列。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-02-16
      • 2017-05-03
      • 1970-01-01
      • 2020-01-10
      • 2011-11-20
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多