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))