0 除算エラーが発生しています。割るフィールドが NULL の場合があることに気付きました。
(SUM(RentMonths * SQFT) / SUM(SQFT))
SQFT が時々 null になる可能性がある場合、この状況を処理する適切な方法は何ですか? おそらく悪いデータであることはわかっていますが、それは重要ではありません。今すぐ修正できません。
0 除算エラーが発生しています。割るフィールドが NULL の場合があることに気付きました。
(SUM(RentMonths * SQFT) / SUM(SQFT))
SQFT が時々 null になる可能性がある場合、この状況を処理する適切な方法は何ですか? おそらく悪いデータであることはわかっていますが、それは重要ではありません。今すぐ修正できません。
で割ること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
利点は、これがほとんどすべてのデータベースで機能することですが、欠点は、除数を計算するために式を繰り返すことです。
ここでは IF ステートメントがかなり適切に思えますね。
これが正しい TSQL 構文かどうかはわかりませんが、次のとおりです。
IF @SQFT IS NOT NULL (SUM(RentMonths * SQFT) / SUM(SQFT))