1

0 除算エラーが発生しています。割るフィールドが NULL の場合があることに気付きました。

(SUM(RentMonths * SQFT) / SUM(SQFT))

SQFT が時々 null になる可能性がある場合、この状況を処理する適切な方法は何ですか? おそらく悪いデータであることはわかっていますが、それは重要ではありません。今すぐ修正できません。

4

2 に答える 2

5

で割ることNULLは完全に有効です。結果は単純にNULLです。問題は (エラー メッセージに示されているように)ゼロで除算しようとしたときです。

NULLIFこの問題を解決するために使用できます。

(SUM(RentMonths * SQFT) / NULLIF(SUM(SQFT), 0))

結果はNULL、除数が である場合、0またはいずれかのオペランドが である場合ですNULL


コメントで指摘されているように、次のCASEステートメントも使用できます。

CASE WHEN SUM(SQFT) <> 0 THEN (SUM(RentMonths * SQFT) / SUM(SQFT)) END

利点は、これがほとんどすべてのデータベースで機能することですが、欠点は、除数を計算するために式を繰り返すことです。

于 2012-07-10T15:43:06.133 に答える
0

ここでは IF ステートメントがかなり適切に思えますね。

これが正しい TSQL 構文かどうかはわかりませんが、次のとおりです。

IF @SQFT IS NOT NULL (SUM(RentMonths * SQFT) / SUM(SQFT))
于 2012-07-10T15:47:10.263 に答える