Reporting services 创建一个数据集,该数据集是SSRS中另一个数据集的子集
在我的SSRS报告中,我已经有一个运行SQL脚本的数据集Aby,参数P1使用a中的所有记录。现在我想得到a的子集,并使用另一个参数P2引用它 是否可能在同一时间获取整个数据集和数据集子集,并且只运行一次脚本 我想创建共享数据集是一种可行的方法,但数据集a仅用于本地使用,不应共享。简短回答 不,这是不可能的 另类 您可以修改查询以使其返回一列用于填充P1参数,另一列用于填充P2。例如:Reporting services 创建一个数据集,该数据集是SSRS中另一个数据集的子集,reporting-services,ssrs-2008-r2,Reporting Services,Ssrs 2008 R2,在我的SSRS报告中,我已经有一个运行SQL脚本的数据集Aby,参数P1使用a中的所有记录。现在我想得到a的子集,并使用另一个参数P2引用它 是否可能在同一时间获取整个数据集和数据集子集,并且只运行一次脚本 我想创建共享数据集是一种可行的方法,但数据集a仅用于本地使用,不应共享。简短回答 不,这是不可能的 另类 您可以修改查询以使其返回一列用于填充P1参数,另一列用于填充P2。例如: select 'Foo' P1, 'Foo' P2 union all select 'Bar', 'Bar'
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,
如果您的参数设置为允许空值,它将显示空值
选项,否则它不会
这个解决方案可以为您工作,但是如果您需要数据集只运行一次,我不确定,我认为SSRS将为每个参数运行查询,即使两个参数都是从一个数据集填充的
让我知道这是否有帮助。实现这一点的一种方法是分组。如果数据集A已经包含了您想要的所有内容,则可以使用标准P2=TRUE对该数据集进行分组。这将数据集A分为两组-一组P2条件为true,另一组P2条件为false
例如考虑一个具有两列、标签和数量的数据集。我想将数据子集为Label=LabelNameOne。我用expression=Fields围绕数据集创建了一个组!Label.Value=LabelNameOne,它会自动为我创建一个子集。假设您希望它在运行时根据用户选择的参数进行过滤,您只需在分组表达式中加入该参数:=字段!Label.Value=参数!P2.Value.
是的,这是另一种选择,谢谢你的想法,而我认为这可能并不比运行两次查询好:1。减慢查询的执行时间。2.返回冗余记录,因为P2数据集是P1的子集,特别是需要返回多列。