多个嵌套IIF



我想我需要SSRS中的嵌套IIF来实现我的目标,如下伪代码所示:

If GoalType.Value = ImplementED And
SavingsGoal.Value <= ImplementEDSavings.Value OR 
If GoalType.Value = ImplementABLE And
SavingsGoal.Value <= ImplementABLESavings.Value 
Then display zero dollars
ELSE
If GoalType = ImplementED And 
SavingsGoal.Value > ImplementEDSavings.value Then
Display SavingsGoal.Value minus ImplementABLESavings
ELSE
If GoalType = ImplementABLE And
SavingsGoal.Value > ImplementABLESavings.Value Then
Display SavingsGoal.Value minus ImplementABLESavings

我有这么多工作要做:

=IIF(First(Fields!GoalType.Value, "Project_Details") = "Implemented" AND 
Sum(Fields!SavingsGoal.Value, "Project_Details") <= Sum(Fields!ImplementedSavings.Value, "dsInitiatives") OR 
(First(Fields!GoalType.Value, "Project_Details") = "Implementable" AND 
Sum(Fields!SavingsGoal.Value, "Project_Details") <= Sum(Fields!ImplementableSavings.Value, "dsInitiatives")),0,
Sum(Fields!SavingsGoal.Value, "Project_Details") - Sum(Fields!ImplementedSavings.Value, "dsInitiatives"))

我所需要的就是弄清楚如何在那里获得最终的"ELSE",意识到我需要更多的IIF或交换机之类的。。。我已经试过几种方法了,我的最后期限很紧。感谢任何能提供帮助的人。请注意,我是SSRS报告的新手。

更新:以下是我尝试过的几种方法。我每次尝试都会出现以下错误:错误BC30057"Public Function IIf(Expression As Boolean,TruePart As Object,FalsePart As Object)As Object"SSRS 的参数太多

=iif((第一个(字段!目标类型值,"Project_Details")="已实现"AND求和(字段!SavingsGoal.Value,"Project_Details")<=总和(字段!ImplementedSavings.Value,"dsInitiatives"),0)或

iif((第一个(字段!目标类型值,"Project_Details")="可实现"AND求和(字段!SavingsGoal.Value,"Project_Details")<=Sum(Fields!ImplementableSavings.Value,"dsInitiative")),0,)或

iif((第一个(字段!目标类型值,"Project_Details")="已实现"AND求和(字段!SavingsGoal.Value,"Project_Details")>求和(域!ImplementedSavings.Value、"dsInitiative"),Sum(Fields!SavingsGoal.Value,"Project_Details")-Sum(字段!ImplementedSavings.Value、"dsInitiative"),)或

iif((First(Fields!GoalType.Value,"Project_Details")="可实现AND求和(字段!SavingsGoal.Value,"Project_Details")>求和(域!可实现的Savings.Value("dsInitiative")),Sum(Fields!SavingsGoal.Value,"Project_Details")-Sum(Field!ImplementableSavings.Value、"dsInitiative"))

=IIF(First(Fields!GoalType.Value,"Project_Details")="Implemented"AND求和(字段!SavingsGoal.Value,"Project_Details")<=求和(字段!ImplementedSavings.Value,"dsInitiatives")或(第一个(字段!目标类型值,"Project_Details")="可实现"AND求和(字段!SavingsGoal.Value,"Project_Details")<=总和(字段!可实现节约值,"dsInitiatives"),0,

Switch(First(Fields!GoalType.Value,"Project_Details")="Implemented",Sum(Fields!SavingsGoal.Value,"Project_Details")-Sum(字段!ImplementedSavings.Value、"dsInitiative")Switch(First(Fields!GoalType.Value,"Project_Details")="Implementable",求和(字段!SavingsGoal.Value,"Project_Details")-求和(域!ImplementableSavings.Value("dsInitiatives")))

个人评论,如果这些系统不会假设每个人都是天生的程序员,并给出会说英语的错误,我就不必来这些网站进行翻译了。好的,肥皂盒结束。再次感谢任何能够帮助的人

这里对您的第一次更新进行了轻微修改。

=iif( (First(Fields!GoalType.Value, "Project_Details") = "Implemented" AND Sum(Fields!SavingsGoal.Value, "Project_Details") <= Sum(Fields!ImplementedSavings.Value, "dsInitiatives")),0,
iif( (First(Fields!GoalType.Value, "Project_Details") = "Implementable" AND Sum(Fields!SavingsGoal.Value, "Project_Details") <= Sum(Fields!ImplementableSavings.Value, "dsInitiatives")),0,  
iif( (First(Fields!GoalType.Value, "Project_Details") = "Implemented" AND Sum(Fields!SavingsGoal.Value, "Project_Details") > Sum(Fields!ImplementedSavings.Value, "dsInitiatives")), Sum(Fields!SavingsGoal.Value, "Project_Details") - Sum(Fields!ImplementedSavings.Value, "dsInitiatives"), 
iif( (First(Fields!GoalType.Value, "Project_Details") = "Implementable" AND Sum(Fields!SavingsGoal.Value, "Project_Details") > Sum(Fields!ImplementableSavings.Value, "dsInitiatives")), Sum(Fields!SavingsGoal.Value, "Project_Details") - Sum(Fields!ImplementableSavings.Value, "dsInitiatives") ) 
)))

我没有使用OR,而是将后面的iif语句嵌套在前面iif的false参数中。关于你犯的那个错误,"争论太多"——实际上你的争论太少了。

这是您代码的第一个(简化的)块:

=iif( First(GoalType) = "Implemented" AND Sum(SavingsGoal) <= Sum(ImplementedSavings),0 ) OR

请注意,您有正确的布尔值,但您只在"0"之后为true提供一个参数。iif需要两个参数,一个是true,另一个是false。在您的实例中,您希望下一个iif语句位于false(else)部分。

更新代码:

=iif( First(GoalType) = "Implemented" AND Sum(SavingsGoal) <= Sum(ImplementedSavings),0, iif(boolean, true, iif(boolean, true, false)))

最新更新