SSRS中的LOOKUP功能总数

时间:2016-12-21 10:21:31

标签: reporting-services

对于SSRS中的每个组(国家,城市......),我计算销售额除以汇率:

Sum(Fields!Net_Sales_Amount.Value)/LOOKUP(Fields!Country.Value, Fields!Country.Value, Fields!RATE.Value, "Currency")

如何创建此总和的总和(最后一组的总和 - 国家/地区)?

我找到的每个解决方案都显示了如何仅为单独的LOOKUP功能执行此操作。我需要用它来划分字段。

以下是我的报告的布局:

enter image description here

和结构:

enter image description here

要计算国家/地区的销售额,我只需要将销售额相加并将其除以LOOKUP函数,但我无法为Total计算。我需要一些以下的值。

1 个答案:

答案 0 :(得分:4)

我认为您只需要更改要汇总的数据,因为看起来您只是在查找汇率?

如果是这种情况,您应该可以使用

=Sum(Fields!Net_Sales_Amount.Value/LOOKUP(Fields!Country.Value, Fields!Country.Value, Fields!RATE.Value, "Currency"))

在您的总文本框中,该文本框需要位于您用于显示各个值的组之外。

如果你想要查找很多值,然后sum将它们全部组合在一起,那么这会更复杂一些。

您需要使用lookup,而不是使用lookupset,它使用相同的语法,但可以返回多个值。但是,没有内置函数可以sum这些返回值,因为在lookupset函数中返回的值实际上是对象而不是数字。因此,您需要使用自定义代码。

打开“报告属性”,然后打开“自定义代码”窗口,您可以在其中粘贴以下内容:

Function SumLookup(ByVal items As Object()) As Decimal
If items Is Nothing Then
  Return Nothing
End If

Dim suma As Decimal = New Decimal()
Dim ct as Integer = New Integer()
suma = 0
ct = 0

For Each item As Object In items
  suma += Convert.ToDecimal(item)
  ct += 1
Next

If (ct = 0) Then return 0 else return suma 
End Function

然后可以在文本框中将其用作表达式:

=Code.SumLookup(LookupSet(Fields!Country.Value, Fields!Country.Value, Fields!RATE.Value, "Currency"))

可以与其他数值一起用于聚合或计算。