Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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
Sql server 多值参数分组的简洁方法_Sql Server_Reporting Services - Fatal编程技术网

Sql server 多值参数分组的简洁方法

Sql server 多值参数分组的简洁方法,sql-server,reporting-services,Sql Server,Reporting Services,在SSRS中,我有一个包含多个多值参数的报告。对于其中一些,我必须为子报表执行分组。问题是Tablix(提供我需要的分组)需要一个数据集,而参数不是数据集 目前,我使用数据集进行分组,该数据集连接多值参数并将其传递给SQL函数。然后,SQL函数返回一个包含多值参数值的单列表。这需要SSRS查询数据库,这对于处理已在报告imho中的参数来说是一种丑陋的方式 有没有一种更简洁的方法来执行基于多值参数的分组?有一种方法可以做到这一点,尽管是否更简洁还有待讨论,那就是构建一个-它们并不难做到,我建议的方

在SSRS中,我有一个包含多个多值参数的报告。对于其中一些,我必须为子报表执行分组。问题是Tablix(提供我需要的分组)需要一个数据集,而参数不是数据集

目前,我使用数据集进行分组,该数据集连接多值参数并将其传递给SQL函数。然后,SQL函数返回一个包含多值参数值的单列表。这需要SSRS查询数据库,这对于处理已在报告imho中的参数来说是一种丑陋的方式


有没有一种更简洁的方法来执行基于多值参数的分组?

有一种方法可以做到这一点,尽管是否更简洁还有待讨论,那就是构建一个-它们并不难做到,我建议的方法非常简单

要使它适用于任何有固定列表的情况,我只是想提出一个想法,您可以创建一种类似以下内容的“查询语言”:

ParameterType=.net type&DataColumnName=Whatever the user wants&Value=first value&Value=second value...
这样,在您拆分的扩展内(&(您将定义一个规则来转义&in Value entries so\&或其他),然后检查您只有一个ParameterType和DataColumnName条目(如果ParameterType不存在),默认为“System.String”,默认为“Value”如果DataColumnName不存在,则抛出一个错误(如果它们是乘法定义的),对于前者,如果设置了,则使用Type.GetType设置列类型,对于后者,则在结果集的“schema”中设置名称

最后,您需要做的就是遍历所有的值条目,并向结果集中添加一行

这不仅适用于多值参数,而且适用于任何您有一个固定列表的、希望转换为数据集的参数,这意味着不需要访问数据库或任何东西—处理将在ReReporting Services服务器上进行

对于多值参数,您只需在报表中的查询中执行for循环即可生成查询

也许,在追求整洁的过程中,您还可以创建一个方便的函数,将一个参数作为参数并生成查询,这样您就有了一个共享库和一个数据处理扩展,而创建报表的人需要做的就是这样的事情(我认为这是一个五行函数):

=MultiValueQuery.GenerateQuery(参数!MyMultiValueParameter)


整洁,也许,你是裁判

您为什么不使用子报表的数据集作为tablix的数据集(选择多值参数),而不是在子报表中使用?我的子报表包含一个图表和一个矩阵。对于mvp中的每个选定值,需要显示图表矩阵组合。矩阵是水平和垂直分组的。在另一个tablix或-matrix中不支持这种分组(即使支持,也会混淆tablix和-matrix的工作方式)