在SQL报表生成器的SQL表达式中使用多个IIF语句

问题描述 投票:0回答:1

我正在为名为Refund Due的现有报告添加新列。在本专栏中,我正在编写以下逻辑的表达式:

  1. 如果incurred > 0然后用No填充退款到期列
  2. 如果incurred =< 0 and status = "closed"然后用Yes填充退款栏
  3. 如果incurred =< 0 and status does not equal "closed"然后用"Refer"填充退款栏

我写了下面的表达式

=IIF (Fields!GROSS_CLAIMS_INCURRED.Value>"0", "No", IIF(Fields!GROSS_CLAIMS_INCURRED.Value<="0" AND Fields!STATUS.Value="Closed", "Yes", IIF(Fields!GROSS_CLAIMS_INCURRED.Value<="0" AND Fields!STATUS.Value="Open", "Refer", IIF(Fields!GROSS_CLAIMS_INCURRED.Value<="0" AND Fields!STATUS.Value="Reopen", "Refer"))

但是,当我预览报表时,请收到以下错误消息:

textrun'Textbox154.Paragraphs [0] .TextRuns [0]'的Value表达式包含一个错误:[BC30516]重载决策失败,因为没有可访问的'IIf'接受此数量的参数。

我该如何解决这个问题,或者我必须使用哪个表达式来获得所需的结果?

在此先感谢您的帮助。

sql-server reportbuilder
1个回答
0
投票

与嵌套的SWITCH语句相比,IIF是一种更清晰的多条件表达式:

=SWITCH(Fields!GROSS_CLAIMS_INCURRED.Value>"0", "No",
Fields!GROSS_CLAIMS_INCURRED.Value<="0" AND Fields!STATUS.Value="Closed", "Yes",
Fields!GROSS_CLAIMS_INCURRED.Value<="0" AND Fields!STATUS.Value="Open", "Refer",
Fields!GROSS_CLAIMS_INCURRED.Value<="0" AND Fields!STATUS.Value="Reopen", "Refer"
)
© www.soinside.com 2019 - 2024. All rights reserved.