2011-12-16 7 views
7

これは簡単な質問かもしれませんが、これまで私が一度も答えたことはありません。 if文の条件を値として使用する方法はありますか?これは、特定の条件が満たされているかどうかを判断するために多くの計算が行われ、そうである場合、その計算が結果である場合には、本当に便利です。一例として、値としてIfステートメントの条件を使用する方法はありますか?

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

私は今、Accessのレポートに取り組んでいるので、強烈な計算での結果を保存することができないように私は、特にSQLへに関して興味があります変数。

答えて

6

ないような概念は、MS Accessレポートの世界に存在するが、どのようにについてのかどうかわから:

MAX([intense calculation], 0)

ようなアプローチの明白な利点は、計算は一度だけ実行する必要があるだろうということです。 SQLのほとんどの形態で

+0

そして、あなたの場合変数がNULLの場合にはデフォルト値が必要です。NVL(oracle)がありますが、誰もがそれを別のものと呼んでいますが、非常に便利です。すべてのDBMSにはそういうものがあります。 – Voo

+0

とintense_calculationが0よりも小さい場合はどうなりますか? – mkk

+0

@mkkの場合、結果は0で、ポスターのIF文と同じです。 –

0

一つのアプローチは、新たな外部クエリでエイリアスされ、テスト強烈な計算列で、サブクエリにメインクエリを移動するだろう - そうのように:

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

うん、これは行く方法だと思う。私はこのようにすることを考えていましたが、条件を参照できるかどうか分からないようなあいまいな構文があるかどうかを見たいと思っていました。ありがとう! – Will