1

データがプルされた後ではなく、サーバー側でいくつかの数値を計算するクエリを作成しようとしています。SQL0802 エラーが発生し続けます。通常のコマンドとコマンドを試しSumましDoublefloat。リターンが長すぎると思います。私は SQL Squirrel を使用しているので、小数点以下の制限を削除して問題が解決するかどうかを確認しました。それを"Gross Margin"捨てているのは計算です。残りの計算は正常に機能します。私が得ることができる助けに感謝します。これはコードのほんの一部です。スペースのために、、、およびセクションWhereGroup By省略しました。Order By

Select  Distinct DB1.Tb1.STORE,
        DB1.Tb2.DATE_ID,

Sum (DB1.Tb1.CUR_CASH_SALES+DB1.Tb1.CUR_CHARGE_SALES) As "Total Sales",

Sum (DB1.Tb1.CUR_CASH_COST+DB1.Tb1.CUR_CHARGE_COST) As "Total Cost",

Sum ((DB1.Tb1.CUR_CASH_SALES+DB1.Tb1.CUR_CHARGE_SALES)-DB1.Tb1.CUR_CASH_COST+DB1.Tb1.CUR_CHARGE_COST)) As "Gross Profit",

Sum (((DB1.Tb1.CUR_CASH_SALES+DB1.Tb1.CUR_CHARGE_SALES)-(DB1.Tb1.CUR_CASH_COST+DB1.Tb1.CUR_CHARGE_COST))/(DB1.Tb1.CUR_CASH_SALES+DB1.Tb1.CUR_CHARGE_SALES)))As "Gross Margin"
4

2 に答える 2

5

問題がゼロ除算である場合は、分母がゼロのときに除算が発生しないようにする必要があります。最も簡単な方法はsum、分子と分母を別々に使用し、その後分割することです。

       sum (
           DB1.Tb1.CUR_CASH_SALES+DB1.Tb1.CUR_CHARGE_SALES-
           DB1.Tb1.CUR_CASH_COST+DB1.Tb1.CUR_CHARGE_COST
       ) /
       sum (
           DB1.Tb1.CUR_CASH_SALES+DB1.Tb1.CUR_CHARGE_SALES
       ) as "Gross Margin"

次に、グループ化するカテゴリ全体の分母がゼロの場合にのみ、ゼロ除算を取得します。

それでも問題が解決しない場合は、さらに何か他のことをする必要があります。必要なものに応じて、次のことができます。

  • 句を使用してwhere、分母がゼロのグループを出力から除外します。
  • 計算する前に、分母がゼロかどうかをチェックするcaseステートメントを計算全体に配置します。ゼロの場合は、計算を意味のある出力(ゼロ、ヌルなど)に置き換えます。
于 2013-01-30T11:17:55.990 に答える
0

ゼロ除算が問題になる場合は、売上のない行を含めても意味がない可能性があることを考慮してください。

CASE 式を使用して、売上がゼロでない場合にのみ除算を行い、売上がゼロの場合は null を使用することを検討してください。

于 2013-01-31T05:03:03.227 に答える