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 使用SQL Server Reporting Services中的嵌套组进行聚合_Reporting Services_Aggregate_Ssrs 2008 R2_Reportbuilder3.0 - Fatal编程技术网

Reporting services 使用SQL Server Reporting Services中的嵌套组进行聚合

Reporting services 使用SQL Server Reporting Services中的嵌套组进行聚合,reporting-services,aggregate,ssrs-2008-r2,reportbuilder3.0,Reporting Services,Aggregate,Ssrs 2008 R2,Reportbuilder3.0,假设我们在SSRS报告中有以下数据结构: District按城市分组,城市按国家分组。然后在国家一级,我想得到城市人口的总和(人口是城市的一个属性,地区没有与之相关的人口)。目前,当使用=SUM(Fields!city\u population.Value)表达式进行聚合时,每个城市的人口将被考虑到与其关联的地区数的倍,这是不正确的 我正在考虑从一个补充数据集中获取数据进行汇总,而不是按地区划分城市(借助函数)。但它可能不支持按年度对国家进行另一个分组级别,该级别计划进一步进行(不知道在这种布

假设我们在SSRS报告中有以下数据结构:

District按城市分组,城市按国家分组。然后在国家一级,我想得到城市人口的总和(人口是城市的一个属性,地区没有与之相关的人口)。目前,当使用
=SUM(Fields!city\u population.Value)
表达式进行聚合时,每个城市的人口将被考虑到与其关联的地区数的倍,这是不正确的

我正在考虑从一个补充数据集中获取数据进行汇总,而不是按地区划分城市(借助函数)。但它可能不支持按年度对国家进行另一个分组级别,该级别计划进一步进行(不知道在这种布局中可以使用什么作为查找键)。有没有办法避免这种情况而不进行查找


更新:需要指出的是,城市地区是一个单独的实体,对应于“城市地区或只有城市,如果没有地区”。此实体是在数据源视图中使用
左连接创建为命名查询的。

在tablix中似乎没有正确的分组设置,在这种情况下不需要查找功能

向报告中添加新的tablix组件,将
国家/地区
字段拖放到
行组
窗格上方的
详细信息
默认组

右键单击
国家
列,然后选择
插入列
/
组内

在已创建的列中,键入标题并使用以下表达式

=SUM(Fields!city_population.Value)
然后拖放详细信息上方和国家/地区下方的
City
字段:

最后,将
District
字段拖放到最右边的列:


让我知道这是否有帮助。

从我读到的内容来看,我想你是在说,由于人口是以城市为单位记录的,如果一个城市有3个区,那么你的数据集将返回该城市3次,每个区的人口相同。
如果是这种情况,并且填充表达式当前为SUM(Fields!population.Value)或类似值,请尝试将其更改为Max(Fields!population.Value)。这不是一个“纯粹”的解决方案,但我认为结果将是您想要的,而且是一个快速解决方案。

Alejandro,谢谢您的回答。我的团队结构与你所描述的相匹配(它是以相反的顺序创建的,从地区开始,然后到城市,然后到国家,但这不重要,对吗?)。我忘了提到city district是一个单独的实体,对应于“city district,或者如果没有district,则仅对应城市”(创建为带左连接的命名查询)——我将用这个更新问题,也许这就是这种聚合行为的原因。@AndreyGrachev,您的数据集的结构是什么。i、 当您运行查询时,您得到了哪些列?数据集是从smdl模型获得的。该模型在城市-城市-地区实体(城市和地区表之间具有左连接的命名查询)和国家实体(国家表)之间具有外键关系。至于列名——这是一个与我试图解决的问题相关的简化结构,问题实际上与城市、国家等无关,因此我没有确切的列名。这更像是一个抽象的问题——我目前得到的结果实际上与我对它应该如何工作的理解相符。这并不是我想要达到的目标。如果每个城市的人口都显示出来,这种方法确实有效。但我需要显示一个国家的城市人口总数。尝试以下表达式:SUM(MAX(FIELDS!city\u population.Value,“group\u city”),“group\u country”)。其想法是在“城市”组中获得最大值(最小值或平均值也适用),然后在“国家”组中应用求和。但这样一个“国家”级别的表达式给出了一个错误,即不能将子组上下文应用于MAX。