SSRS 中的 LOOKUP 函数总数

Tes*_*t11 1 reporting-services

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

Sum(Fields!Net_Sales_Amount.Value)/LOOKUP(Fields!Country.Value, Fields!Country.Value, Fields!RATE.Value, "Currency")
Run Code Online (Sandbox Code Playgroud)

我如何创建这个总和(最后一组的总和 - 国家)?

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

这是我的报告的布局:

在此处输入图片说明

和结构:

在此处输入图片说明

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

iam*_*ave 5

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

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

=Sum(Fields!Net_Sales_Amount.Value/LOOKUP(Fields!Country.Value, Fields!Country.Value, Fields!RATE.Value, "Currency"))
Run Code Online (Sandbox Code Playgroud)

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


但是,如果您想查找很多值,然后将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
Run Code Online (Sandbox Code Playgroud)

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

=Code.SumLookup(LookupSet(Fields!Country.Value, Fields!Country.Value, Fields!RATE.Value, "Currency"))
Run Code Online (Sandbox Code Playgroud)

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