SSRS 多个 IF 表达式(SQL CASE 的 SSRS 版本)

SSRS multiple IF expressions (SSRS Version Of a SQL CASE)

我真的很难写一个 SSRS 表达式,由于数据库的各种权限问题,我无法在 SQL 中完成,这需要几秒钟...我需要一个文本框表达式根据协议数据集中 OtherModelsInfo 中的值显示 20000、30000、40000、60000。我曾尝试编写表达式,但我不是表达式作者,所以我深表歉意。我相信一位同事告诉我 First 需要留在那儿以确保显示正确的 OtherModelsInfo 值。有任何问题请告诉我,谢谢:)

=iif(First(Fields!OtherModelsInfo.Value,"Agreement") = "V12 All V12 Models 4 Year 60,000 Miles Extended Warranty", then 60000, (First(Fields!OtherModelsInfo.Value,"Agreement") = "V12 All V12 Models 3 Year 30,000 Miles ", then 30000, (First(Fields!OtherModelsInfo.Value,"Agreement") = "V12 All V12 Models 4 Year 40,000 Miles ", then 40000, (First(Fields!OtherModelsInfo.Value,"Agreement") = "V12 All V12 Models 2 Year 20,000 Miles ", then 20000,

你不需要使用“then”。 IIF() 语法很简单

=IIF(Expression to evaluate, True result, False Result)

例如

=IIF(Fields!Score.Value > 75, "Pass", "Fail")

如果您想分支多个测试,那么您可以像这样嵌套 IIF()。

=IIF(Fields!Score.Value > 75, "Pass", IIF(Fields!Score.Value < 20, "BadFail",  "Fail"))

但是,在您的情况下,switch 语句可能更易于阅读和调试,而不是嵌套大量 IIF

=SWITCH(
   First(Fields!OtherModelsInfo.Value,"Agreement") = "V12 All V12 Models 4 Year 60,000 Miles Extended Warranty", 60000, 
   First(Fields!OtherModelsInfo.Value,"Agreement") = "V12 All V12 Models 3 Year 30,000 Miles", 30000,
   First(Fields!OtherModelsInfo.Value,"Agreement") = "V12 All V12 Models 4 Year 40,000 Miles", 40000,
   First(Fields!OtherModelsInfo.Value,"Agreement") = "V12 All V12 Models 2 Year 20,000 Miles", 20000,
   True, 0)

SWITCH 使用成对的表达式,第一个表达式用于测试其计算结果是否为真,第二个是应返回的结果。它在第一个计算结果为 True 的表达式处停止。 最后的 True, 0 对就像一个 else,因为“True”总是计算为 True。因此,在这种情况下,如果上述匹配的 none,您将返回 0。

关于FIRST()函数。如果包含表达式的文本框位于聚合具有相同 OtherModelsInfo 字段的数据行的组中,您将只需要它。如果文本框在详细信息组中,则不需要它。