2011-12-16 3 views
7

Это может быть простой вопрос, но это тот, которого я никогда раньше не видел. Есть ли способ использовать условие оператора if как его значение? Это было бы действительно полезно в тех случаях, когда выполняется множество вычислений, чтобы определить, выполнено ли какое-либо условие, и если да, то этот результат является результатом.Есть ли способ использовать условие оператора If как его значение?

В качестве примера:

if ([intense calculation] > 0, [same intense calculation], 0) 

Я заинтересован в частности, в отношении SQL, так как я работаю над отчетом в доступе прямо сейчас, и поэтому не может хранить результат интенсивного расчета в Переменная.

ответ

6

Не уверен, что, если такое понятие существует в мире отчетов MS Access, но как насчет:

MAX([intense calculation], 0)

Очевидное преимущество такого подхода заключается в том, что расчет нужно будет только сделать один раз.

+0

И если вы хотите значение по умолчанию, если переменная NULL есть NVL (в oracle), и, к сожалению, все любят называть это другой, но все же чрезвычайно полезной, и я думаю, что каждая СУБД имеет что-то подобное. – Voo

+0

и что, если интенсивность вычислений ниже 0? – mkk

+0

@mkk, то результат равен 0, так же как и утверждение IF плаката. –

0

Один подхода в большинстве форм SQL будет переместить основной запрос в подзапрос с интенсивной колонкой расчета псевдонимом и испытанной в новом внешнем запросе - например, так:

select v.*, 
     case intense_calc > 0 then intense_calc else 0 end as positive_calc 
from (select [intense calculation] as intense_calc, 
      [other columns] 
     from ...) as v 
+0

Yup, я думаю, что это путь. Я думал о том, чтобы сделать это таким образом, но хотел посмотреть, может быть, был какой-то неясный синтаксис, о котором я не знал, который мог бы ссылаться на это условие. Благодаря! – Will

Смежные вопросы