2017-04-21 9 views
1

これは私にゼロ除算エラーを与えるのはなぜですか?私はこれが、指定されたパラメータでデータベース内のレコードの数を返すようにしたいと思います。助けてくれてありがとう。なぜゼロ除算エラーを与えるのですか

SELECT COUNT(*) 
FROM dbcrms.ccars.ci_submission_history 
    where crms_dt = '2016-12-31' 
     and totalliabilities <> null or totalliabilities <> 0 
      and mra_required = 'Yes' 
       and committedexposure/totalliabilities <= 1 

私はあなたがあなたの句が評価される順序を保証することはできませんSQL Serverの2014

+0

括弧を忘れてしまったため –

+0

合計価値0の – Bestter

+0

少なくとも1つの行が合計可能性のために0の値を持ち、括弧がないためです。 –

答えて

6

を使用していますので、committedexposure/totalliabilitiestotalliabilities <> 0

nullif()null0を設定する回避策の前に評価することができます。

SELECT COUNT(*) 
FROM dbcrms.ccars.ci_submission_history 
    where crms_dt = '2016-12-31' 
     and totalliabilities <> 0 
      and mra_required = 'Yes' 
       and committedexposure/nullif(totalliabilities,0) <= 1 

および<> nullはおそらくis not nullでなければなりません。totalliabilities <> 0の場合は真ですので、冗長です。

また、論理演算子については、and takes precedence over orということに注意してください。 orの両側をラップして、達成したいことが明確になるようにすることが最善の方法です。

+0

ありがとう! –

+0

@DanielBailey助けて嬉しいです! – SqlZim

関連する問題