SSRS 表达式查找和 Max 不能一起工作

问题描述 投票:0回答:2
= MAX(LookupSet("SR Light Naphtha",Fields!DISPLAY_NAME.Value, Fields!Max.Value, "LIMS_VALUES"))

部署报告后,报告 UI 出现错误。

下面是返回值的数据集。我需要得到 MIN(Min) 和 MAX(MAX)。

使用下面的数据集,最大值的结果应该是 120。但它在报告 UI 上显示错误。

sql-server reporting-services expression lookup
2个回答
1
投票

lookupset
函数返回一个对象,其中包含查找找到的所有值。由于
max
函数需要一列值,并且您给它一个对象,这意味着您正在尝试使用
max
执行
max
实际上无法执行的操作。

要查找

max
中返回的所有值中的
lookupset
,您需要向报告中添加一些自定义代码,然后将
lookupset
的结果传递给该自定义代码。

在自定义代码中,为每个循环编写一个循环,迭代

lookupset
的值并保留最大的值,输出循环末尾剩下的任何值。该值将是您所追求的最大值。

Microsoft 的此文档展示了如何编写自定义代码来循环

lookupset
的结果,尽管输出 HTML。您应该能够很容易地替换该函数的内部结构,以返回最小值、最大值或其他聚合,例如满足您自己需求的总和。

链接失效时的示例代码:

=LookupSet(Fields!SourceMatchCol.Value, Fields!TargetMatchCol.Value, Fields!ReturnCol.Value, "Dataset")
Function LookupSetMax(ByVal items As Object()) As Decimal
  If items Is Nothing Then
    Return Nothing
  End If

  Dim maxValue as Decimal = Decimal.MinValue
   
  For Each item As Object In items
    If thisItemAsDecimal > currentMax Then currentMax = thisItemAsDecimal
  Next
   
  Return maxValue
End Function

0
投票

由于您的搜索值是硬编码的,因此您可以仅在带有 IIF 的数据集上使用 MAX:

= MAX(IIF(Fields!DISPLAY_NAME.Value = "SR Light Naphtha", Fields!Max.Value, NOTHING) "LIMS_VALUES")


= MIN(IIF(Fields!DISPLAY_NAME.Value = "SR Light Naphtha", Fields!Min.Value, NOTHING) "LIMS_VALUES")
© www.soinside.com 2019 - 2024. All rights reserved.