Sql 具有多个条件的IIF语句

Sql 具有多个条件的IIF语句,sql,ms-access,Sql,Ms Access,同意: IIf([consents].[decision]=1,"grant", IIf([consents].[allowbreaktheglass]=0,"deny""Default"), IIf([consents].[AllowBreakTheGlass]=1 AND [consents].[Decision]=0,"emergency only")) IIF语句返回错误: 您输入的表达式有一个包含错误参数数的函数 同意的标准仅为批准、拒绝和紧急情况 IIF语句的语法是

同意:

IIf([consents].[decision]=1,"grant",
    IIf([consents].[allowbreaktheglass]=0,"deny""Default"),
    IIf([consents].[AllowBreakTheGlass]=1 AND [consents].[Decision]=0,"emergency only"))
IIF
语句返回错误:

您输入的表达式有一个包含错误参数数的函数


同意的标准仅为批准、拒绝和紧急情况

IIF语句的语法是:
IIF(expr、truepart、falsepart)
您在以下2中缺少
falsepart

尝试更改:
IIf([approves].[allowbreaktheglass]=0,“deny”“Default”)

收件人:
IIf([approves].[allowbreaktheglass]=0,“拒绝”,“默认”)

和:
IIf([同意][允许破裂玻璃]=1和[同意][决定]=0,“仅限紧急情况”)

致:
IIf([approvements].[AllowBreakTheGlass]=1和[approvements].[Decision]=0,“仅限紧急情况”)


欲了解更多信息,请访问:

并不100%清楚您的
嵌套IIF语句想要实现什么,但是您只是缺少一个失败参数,以下可能是您想要的:

为最后一个失败参数添加了“Error”,并将“Default”移到第一个子句的失败中

Consent: 
    IIF([consents].[decision] = 1, 'grant',
        IIF([consents].[allowbreaktheglass] = 0, 'deny',
            IIF([consents].[AllowBreakTheGlass] = 1 AND [consents].[Decision] = 0,
                'emergency only', 'Error?')) 'Default')

查看是否发现
Switch
比嵌套的
IIf
语句更容易

在Access查询设计器中打开新查询,切换到SQL视图,然后粘贴到此语句

选择
开关(
c、 [决定]=1,“授予”,
c、 [allowbreaktheglass]=0,“拒绝”,
c、 [AllowBreakTheGlass]=1和[Decision]=0,“仅限紧急情况”,
正确,“默认”
)作为同意
作为c的同意书;
开关
对表达式/值对进行操作。它返回表达式计算结果为True的第一对的值,并忽略其余对,不管它们是否为True

不确定我是否理解了您想要的逻辑,但如果
[decision]=1,第一对将返回
'grant'
。如果没有,它将检查下一对。等等最后一对具有
True
作为其表达式,因此当前3对中没有一对匹配时,函数将返回
“默认值”