2017-09-29 7 views
0

SQL Serverで除算を使用しようとしています。私は以下のコードスニペットを試しました。SQL Serverの除算

SELECT m.[Profit]/f.[Target] 

は私も

SELECT SUM(m.[Profit]/f.[Target]) 

を試してみましたが、私は

除算によってゼロにエラーが発生したエラーを取得します。
警告:Null値は、集計または他のSET操作によって削除されます。

これはどのような理由があり、どのように修正できますか?推奨される修正プログラムでは、このコードは機能するはずだが、そうではないと言われています。分母がゼロのとき

SELECT SUM(m.[Profit]/NULLIF(f.[Target],0)) 

が、あなたが得るエラーが問題となっている正確に何を指定NULL

+1

理由は 'Fの値の1つである[ターゲット。 ] 'は0です。このような場合に、SQL-Serverに何をしたいかを伝えることで修正できます。 –

+0

Profitとtargetのデータ型に応じて、整数演算でもキャッチできます。それらのうちの1つが整数でない限り、あなたは大丈夫です。 – HLGEM

答えて

3

使用NULLIF

感謝。あなたのコードはゼロで割り切ろうとしています。これは数学的に不可能です。

このエラーを回避するには、NULLIFを指定してください。

0

に置き換えられますゼロ例外で割っ避けるため

1

私は(利益/ターゲット列によって推測)目標の%を決定しようとしていた場合、私のような何かをしようとは:

SELECT 
    CASE WHEN ISNULL(f.[Target],0) = 0 THEN NULL -- or whatever you need to return when the target value is undefined, or it is 0 
    ELSE m.[Profit]/f.[Target] END AS [result]