代码之家  ›  专栏  ›  技术社区  ›  BartMao

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

  •  4
  • BartMao  · 技术社区  · 8 年前

    在我的SSRS报告中,我已经有一个数据集a(通过运行SQL脚本),参数P1使用a中的所有记录。

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

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

    2 回复  |  直到 8 年前
        1
  •  3
  •   alejandro zuleta    8 年前

    简短的回答

    不,这是不可能的。

    可供替代的

    您可以修改查询,使其返回一列用于填充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 用于填充 第1页 参数和 P2 用于填充 第2页 参数

    注意,子集列(在我的情况下为P2)的值小于P1, 如果参数设置为允许 NULL 值,它将显示NULL 选项,否则不会。

    这个解决方案可能适用于您,但如果您只需要运行一次数据集,我不确定,我认为SSRS将为每个参数运行查询,即使两个参数都是从一个数据集填充的。

    如果有帮助,请告诉我。

        2
  •  0
  •   codeMonkey mr. onoffon    7 年前

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

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