在查询中嵌套if语句

时间:2010-10-07 03:44:09

标签: ms-access

(请原谅我没有使用别名)。如果第三季度销售额等于第四季度销售额,我希望我的查询输出说“无”,但是当他们相互平等时,我的输出只是说“向上”。请帮我纠正这段代码

trend: IIf([qryQuarterlyCustomersales3rdQuarter_final]
.[3rd qrtr sls]=[qryQuarterlyCustomersales4thQuarter_final]
.[4th qrtr sls],"none",
IIf([qryQuarterlyCustomersales3rdQuarter_final]
.[3rd qrtr sls]>[qryQuarterlyCustomersales4thQuarter_final]
.[4th qrtr sls],"down","up"))

2 个答案:

答案 0 :(得分:1)

什么数据类型是[3rd qrtr sls]和[4th qrtr sls]? 你能发布一些样本数据吗?

这会产生什么?

IIF([qryQuarterlyCustomersales4thQuarter_final]
.[4th qrtr sls] > [qryQuarterlyCustomersales3rdQuarter_final]
.[3rd qrtr sls], "up", IIF([qryQuarterlyCustomersales4thQuarter_final].[4th qrtr sls] <[qryQuarterlyCustomersales3rdQuarter_final]
.[3rd qrtr sls], "down", "none"))

如果仍然产生“up”,那么你知道存储在这两列中的值不相等

答案 1 :(得分:0)

您确定这两个值完全相同吗? 如上所述,内部iif语句中似乎存在轻微错误,但这并不能解释您目前获得的结果。

伪代码帮助我理解这些表达式是如何工作的:

if q3 = q4
    "none"
else*
    if q3 > q4
        "up"
    else*
        "down"

*请注意隐含else;这里不是合法的语法

尽可能少地进行更改,这应该按照您的预期进行:

trend: IIf([qryQuarterlyCustomersales3rdQuarter_final]
.[3rd qrtr sls] = [qryQuarterlyCustomersales4thQuarter_final]
.[4th qrtr sls],"none",
IIf([qryQuarterlyCustomersales3rdQuarter_final]
.[3rd qrtr sls] > [qryQuarterlyCustomersales4thQuarter_final]
.[4th qrtr sls],"up","down")) # <- these final two args should be switched

Documentation

  

语法

     

IIf(expr,truepart,falsepart)

     

IIf函数语法有这些   参数:

     

ARGUMENT DESCRIPTION expr必需。   您要评估的表达式。   truepart必需。价值或表达   如果expr为True则返回。   falsepart必需。价值或   如果expr为False,则返回表达式。