IBM Support

[Db2] Db2 V11.1以降、集約関数 SUM を使う SQL で SQL0802N (桁あふれ) が発生することがある

Troubleshooting


Problem

Db2 V11.1 では、V10.5 以前では発生しなかった集約関数 SUM を使う SQL 文で、「SQL0802N   算術オーバーフロー、またはその他の算術例外が 発生しました。」のエラーが発生する可能性があります。

Symptom

V10.5では問題が無く実行できたSQL文がSQL0802Nで失敗しました。テーブル定義およびテーブルデータの変更はありません。db2exfmtを使ってOPTIMIZED STATEMENTを比較したところ以下の特徴がが見られました。

Original Statement:
------------------
SELECT ...

(SELECT SUM(T1.C1) FROM T1 WHERE T1.C2 = T2.C1)
...
(SELECT SUM(T1.C1) FROM T1 WHERE T1.C2 = T2.C1)
...
(SELECT SUM(T1.C1) FROM T1 WHERE T1.C2 = T2.C1)
...
) FROM T2

Original Stetementは、同じ副照会を複数指定していますが、Optimized Statement では、共通の副照会を一度に実行しGROUP BY で C1 の値でまとめた後、WHERE で抽出しているようです。V10.5では、このような変換は行われていませんでした。

Optimized Statement:
-------------------
SELECT ...

     (SELECT
        Q11.$C0
      FROM
        (SELECT
           SUM(Q10.C1),
           Q10."C2
         FROM
           (SELECT
              Q9.C1,
              Q9.C2
            FROM
              T1I AS Q9
           ) AS Q10
         GROUP BY
           Q10.C1
        ) AS Q11
      WHERE
        (Q11.C1 = Q8.C2)
     ) AS Q12

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008Pl0AAE","label":"Compiler-\u003EQuery Rewrite"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"11.1.0;11.5.0"}]

Log InLog in to view more of this document

This document has the abstract of a technical article that is available to authorized users once you have logged on. Please use Log in button above to access the full document. After log in, if you do not have the right authorization for this document, there will be instructions on what to do next.

Document Information

Modified date:
30 April 2025

UID

swg22011444