割り算を含むカスタム項目を配置して集計を実行すると、エラー「C5320」が発生します
製品ブランド: |
Dr.Sum MotionBoard Cloud |
---|
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リファレンス」をご参照ください。