使用Sum(IIF())和多个数据集

时间:2017-02-21 15:33:20

标签: reporting-services

使用以下语句根据特定字段值(Fields!CSU.Value="CEG")

计算多类别收入的百分比

=sum(iif(Fields!CSU.Value="CEG",cdbl(Sum(Fields!Multi_Cat__Rev.Value)/Sum(Fields!Est_Revenue_000_s.Value)/1000),0))

这在我正在使用的当前数据集中工作正常。我也试图计算2个数据集之间的差异(相同的等式)但是当我在函数中指定第2个数据集时,我得到嵌套的聚合错误(见下文)

用于计算字段=Lookup(Fields!Opp__.Value,Fields!Opp__.Value,sum(iif(Fields!CSU.Value="CEG",cdbl(Sum(Fields!Multi_Cat__Rev.Value)/Sum(Fields!Est_Revenue_000_s.Value)/1000),0),"dsPriorWeek"))'的表达式包括聚合,RowNumberRunningValue,上一个或查找函数。 Aggregate, RowNumber

我已经搜索过,找不到我的问题的答案,请帮忙...

以下是我尝试这样做的最新方式: =sum(iif(Fields!CSU.Value="CEG",cdbl(Sum(Fields!Multi_Cat__Rev.Value)/Sum(Fields!Est_Revenue_000_s.Value)/1000),0))-sum(iif(Fields!CSU.Value="CEG",cdbl(Sum(Fields!Multi_Cat__Rev.Value)/Sum(Fields!Est_Revenue_000_s.Value)/1000),0),"dsPriorWeek")

1 个答案:

答案 0 :(得分:0)

首先,您需要将此表达式放在报表的文本框中,而不是放在数据集的计算字段中。

其次,您需要将聚合函数置于Lookup函数之外。查找将返回您需要的列,然后汇总它。

编辑: 嵌套聚合在SSRS中通常没有意义。此外,如果您要在Sum函数中指定范围的路径,则只能指定一个组。因此,如果您要对表格中的多个项目进行分组,则会很快遇到问题。

根据您的澄清,我建议您重写查询,以便在一个数据集中引入所需的所有值。 SSRS中的功能有限,无法跨数据集进行合并或聚合。

相关问题