割り算を含むカスタム項目を配置して集計を実行すると、エラー「C5320」が発生します

製品ブランド:

Dr.Sum

MotionBoard Cloud

製品名: Dr.Sum Datalizer , MotionBoard Cloud Entry Edition , MotionBoard Cloud Excelインタ-フェイス
バージョン: 3.x 4.x 5.x

公開日時:

2013/01/29 05:41

更新日時:

2022/08/05 18:00

記事番号:

000002189

MotionBoard Cloud Excelインターフェイスオプションでも利用可能です。 その場合、Datalizer/Datalizer for Excelの記述を MotionBoard Cloud Excelインターフェイスオプションと読み替えてください。読み替え時の注意事項はこちらをご覧ください

MotionBoard Cloud Entry Editionでも利用可能です。 その場合、Datalizer for Webの記述を MotionBoard Cloud Entry Editionと読み替えてください。
読み替え時の注意事項はこちらをご覧ください

エラー「C5320」は集計処理に失敗した際の汎用的なエラーコードですが、Dr.Sum Server Status のエラーコードが「80100000」の場合は、ゼロ除算が行われたことによるエラーです。

回避方法

たとえばカスタム項目で「項目A÷項目B」を行う際に、「項目B」に 0 が含まれる可能性のある場合にゼロ除算を回避するには、以下のように NULLIF 関数を使用します。

[項目A] / NULLIF([項目B], 0)

 

上記はゼロ除算の場合 NULL を返します。NULL ではなく 0 を返したい場合は NVL 関数を組み合わせます。

NVL([項目A] / NULLIF([項目B], 0), 0)

 

Dr.Sum 5.1 以降では ZERODIV 関数を使用することもできます。

ZERODIV([項目A], [項目B])

 

ZERODIV 関数はゼロ除算の結果はNULLを返しますので、0を返したい場合は NVL 関数を組み合わせます。

NVL(ZERODIV([項目A], [項目B]), 0)

 

注意事項

Dr.Sum は、CASE 式の戻り値や、DECODE 関数の引数を先に評価してから、条件判定の結果を返す、と言う処理順のため、条件に一致しない式にゼロ除算が含まれる場合でもエラーとなります。
たとえば以下の CASE 式において、評価する「分母数値項目」の値が 0 であっても、ELSE の式でゼロ除算が発生するためエラーになります。

CASE 分母数値項目
  WHEN 0 THEN 0
  ELSE 分子数値項目 / 分母数値項目
END

該当する場合は、上述のように NULLIF 関数を計算式を指定することでエラーを回避できます。

各関数の詳細な説明は、ご利用バージョンのマニュアル「SQLリファレンス」をご参照ください。

回答

この記事は役に立ちましたか?

コメントしない

「送信」をクリックすると、次の内容に同意したことになります:カスタマーサクセス利用規約