2013-08-05 4 views
-2

Это, как я хотел бы написать его в C.Как написать этот оператор if в запросе MS-Access?

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; 
    } 

Я попытался вложенности тонну заявлений IIF, но он получил так грязно это было непроницаемо. Есть ли более эффективный способ?

Любая помощь будет замечательной. Благодаря!

+3

В чистом синтаксисе SQL Access нет лучшего способа, чем гнезда много КИРП – Rafael

+2

возможно дубликат [Как я пишу это в запросе MS Access?] (http://stackoverflow.com/questions/18000194/how-would-i-write-this-in-a-ms-access-query) –

+0

Это не дубликат. И я намеревался вернуть 0, если x был отрицательным. –

ответ

5
iif(x>50,[your code],iif(x > 0, iif(a < .125y,0,iif(z >= 50,50,x)),0) 

Будущее примечание: это не похоже на огромную вложенную проблему. Я видел некоторых с 10 или более уровнями, даже попав в лимит (Somewhere @ 10?). Один трюк, который я сделал для сложных проблем, - это создание подзапросов, которые выполняют некоторые вычисления для основного запроса.

Ваша самая легкая ставка для чего-то слишком сложного - это просто создать публичную функцию в модуле. Затем вы можете использовать это, как обычно, в любой другой оценке. Так что ...

Public Function ReturnMyValue(x as Integer, a as integer, y as integer) as Integer 
'your code here 
End Function 

Тогда в запросе ...

=ReturnMyValue(x,a,y) 
Смежные вопросы