使用SSRS 2016在矩阵报表中使用查找和SUM

时间:2019-06-18 11:19:24

标签: reporting-services ssrs-2016

使用SSRS 2016并插入一个矩阵报告表,以显示/计算月费率和总额。由LookUp字段得出的月费率,该字段查找PoolCar并从不同的Daily_Cost获取DataSet,然后乘以Days值字段:

= Lookup(Fields!PoolCar.Value, Fields!Registration.Value, Fields!Daily_Cost.Value, "PoolCar_Costs") * Sum(Fields!Days.Value)

但是,无法计算该列的sum()
有什么想法吗?

我尝试使用“变量”选项,但它不允许聚合。

更新:

enter image description here

2 个答案:

答案 0 :(得分:0)

已编辑(请参见您在表达式中(“代码”部分)调用的代码):

您可以通过多种方式进行操作。要么在查询短语构建器中进行总和...

SQL

SELECT T1.*,
(SELECT Sum(S1.Daily_Cost) FROM YourTableName S1 WHERE S1.Registrations = T1.PoolCar) AS SumYouWantToCalculateBeforeTheReport
FROM YourTable T1

...或者您可以使用自定义代码来实现。

此解决方案要求您的tablix包含一个“详细信息”部分,您在其中传递要对每个详细信息行求和的字段的值,然后在页脚部分中显示/使用总和进行计算

您在表达式(“详细信息”部分)中调用的代码

=Code.ValueIWantToSum(Lookup(Fields!PoolCar.Value, Fields!Registration.Value, Fields!Daily_Cost.Value, "PoolCar_Costs"))

详细信息部分完成后在表达式中调用的代码(组页脚)

=Code.DailyCostSum()

自定义代码

Private runningtotal As Decimal = 0

Function ValueIWantToSum(svalue As Decimal) as String

    runningtotal = runningtotal + svalue
    Return "added"

End Function


Private DailyCostSum() As Decimal
    Return runningtotal
End Function

答案 1 :(得分:0)

无休止的时间后,我碰到了this website,在其中进行了更详细的说明。
最后我发现,重要的一点是应该使用表达式所在的列外面的分组!

以下代码已添加到“报表属性”中的“代码”部分。

Public Shared Value as Double=0
  Public Shared Function GetValue(Item as Double) as Double
     value= value + Item
     return Item
  End Function
  Public Shared Function GetTotal()
     return value
  End Function

数据行具有以下表达式:

=Code.GetValue( Sum(Fields!Days.Value) * Lookup(Fields!PoolCar.Value, Fields!Registration.Value, Fields!Daily_Cost.Value, "PoolCar_Costs") )

总行具有以下表达式:

=Code.GetTotal()