Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reporting services 创建一个数据集,该数据集是SSRS中另一个数据集的子集_Reporting Services_Ssrs 2008 R2 - Fatal编程技术网

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

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'

在我的SSRS报告中,我已经有一个运行SQL脚本的数据集Aby,参数P1使用a中的所有记录。现在我想得到a的子集,并使用另一个参数P2引用它

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

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

简短回答

不,这是不可能的

另类

您可以修改查询以使其返回一列用于填充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, 如果您的参数设置为允许空值,它将显示空值 选项,否则它不会

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


让我知道这是否有帮助。

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


例如考虑一个具有两列、标签和数量的数据集。我想将数据子集为Label=LabelNameOne。我用expression=Fields围绕数据集创建了一个组!Label.Value=LabelNameOne,它会自动为我创建一个子集。假设您希望它在运行时根据用户选择的参数进行过滤,您只需在分组表达式中加入该参数:=字段!Label.Value=参数!P2.Value.

是的,这是另一种选择,谢谢你的想法,而我认为这可能并不比运行两次查询好:1。减慢查询的执行时间。2.返回冗余记录,因为P2数据集是P1的子集,特别是需要返回多列。