如何在MS-Access查询中编写此if语句?

And*_*say -2 sql ms-access if-statement

这就是我用C写的方式.

if (x > 50)
    {
    //Already wrote this
    }

else if((x < 50) && (x > 0))
    {
    if (a < 0.125y)
        {return 0;}
    else if (z >= 50)
        {return 50;}
    else
        {return x;}
    }

else
    { 
    return 0;
    } 
Run Code Online (Sandbox Code Playgroud)

我尝试嵌套了大量的iif语句,但它变得如此混乱,这是不可读的.有没有更有效的方法?

任何帮助都会很精彩.谢谢!

APr*_*ugh 5

iif(x>50,[your code],iif(x > 0, iif(a < .125y,0,iif(z >= 50,50,x)),0)
Run Code Online (Sandbox Code Playgroud)

未来注意:这似乎不是一个巨大的嵌套问题.我已经看到一些有10级或更多级别,甚至达到极限(某处@ 10?).我为复杂问题做的一个技巧是创建子查询,它们对主查询进行一些计算.

对于过于复杂的事情,最简单的赌注就是在模块中创建一个公共函数.然后,您可以像查询中的任何其他评估一样使用它.所以...

Public Function ReturnMyValue(x as Integer, a as integer, y as integer) as Integer 
'your code here
End Function
Run Code Online (Sandbox Code Playgroud)

然后在你的查询...

=ReturnMyValue(x,a,y)
Run Code Online (Sandbox Code Playgroud)