从 SSRS 中的多个字段中选择 MAX

Pick MAX from multiple fields in SSRS

我有一个很大的 SSRS 报告,我试图从多个 fields.Right 中获取最大值,现在我有 IIF 获取两个日期之间的最大值,但我想要从所有字段中获取最大值报告。这是我必须在 2 个值之间获取 MAX

=IIF(((IIF(Fields!OnOrder1Day.Value<Fields!Sold1Day.Value, 
Fields!Sold1Day.Value, Fields!OnOrder1Day.Value) + 
IIF(Fields!OnOrder2Day.Value<Fields!Sold2Day.Value, Fields!Sold2Day.Value, 
Fields!OnOrder2Day.Value) + 
IIF(Fields!OnOrder3Day.Value<Fields!Sold3Day.Value, Fields!Sold3Day.Value, 
Fields!OnOrder3Day.Value)) - (Fields!lonhand.Value - 
Fields!OnOrderToday.Value)-Fields!onpo.Value)<0, 0, 
((IIF(Fields!OnOrder1Day.Value<Fields!Sold1Day.Value, Fields!Sold1Day.Value, 
Fields!OnOrder1Day.Value) + 
IIF(Fields!OnOrder2Day.Value<Fields!Sold2Day.Value, Fields!Sold2Day.Value, 
Fields!OnOrder2Day.Value) + 
IIF(Fields!OnOrder3Day.Value<Fields!Sold3Day.Value, Fields!Sold3Day.Value, 
Fields!OnOrder3Day.Value)) - (Fields!lonhand.Value - 
Fields!OnOrderToday.Value)-Fields!onpo.Value))

我想做的是从以下所有字段中找到最大值:

Fields!OnOrder1Day.Value
Fields!Sold1Day.Value
Fields!OnOrder2Day.Value
Fields!Sold2Day.Value
Fields!OnOrder3Day.Value
Fields!Sold3Day.Value
Fields!OnOrder4Day.Value
Fields!Sold4Day.Value
Fields!OnOrder5Day.Value
Fields!Sold5Day.Value
Fields!OnOrder6Day.Value
Fields!Sold6Day.Value

是否可以做类似

的事情
MAX(Fields!OnOrder1Day.Value,Fields!Sold1Day.Value,Fields!OnOrder2Day.Value,Fields!Sold2Day.Value,Fields!OnOrder3Day.Value,Fields!Sold3Day.Value,Fields!OnOrder4Day.Value,Fields!Sold4Day.Value,Fields!OnOrder5Day.Value,Fields!Sold5Day.Value,Fields!OnOrder6Day.Value,Fields!Sold6Day.Value)

如果我理解正确,您需要数据集中多个字段的最大值。基本上,您想要最大值中的最大值。使用大量嵌入式 IIF 是可行的,只是麻烦。

IIF(
    (MAX(Fields!OnOrder1Day.Value) > MAX(Fields!OnOrder2Day.Value)) AND
    (MAX(Fields!OnOrder1Day.Value) > MAX(Fields!OnOrder3Day.Value)) *ETC*,
    Fields!OnOrder1Day.Value,
    IIF(
         (MAX(Fields!OnOrder2Day.Value) > MAX(Fields!OnOrder1Day.Value)) AND
         (MAX(Fields!OnOrder2Day.Value) > MAX(Fields!OnOrder3Day.Value)) *ETC*,
         MAX(Fields!OnOrder2Day.Value,
         IIF( *ETC*),
    ),
)

你可以添加自定义函数,像这样

Public Function GetMaxDate(val1 as Date, val2 as Date) as Date

    Return iif(val1 > val2, val1, val2)

End Function

并在你的表达中使用它

=Code.GetMaxDate(Code.GetMaxDate(Code.GetMaxDate(Code.GetMaxDate(Max(Fields!OnOrder1Day.Value),
                                                                 Max(Fields!Sold1Day.Value)
                                                                ),
                                                 Max(Fields!OnOrder2Day.Value)
                                                ),
                                 Max(Fields!OnOrder2Day.Value)
                                ),
                 Max(Fields!OnOrder3Day.Value)
                )

等等

或根据需要定义任何其他函数参数