以下报错有什么解决办法,数据累加发生数值溢出

前10月累加没有问题,累加到11月发生报错。

代码:

,CASE WHEN FINA_PPTHBDRB.YEAR = ${年度} AND ${月份} >=1  then FINA_PPTHBDRB."line_1" else 0 end +

CASE WHEN FINA_PPTHBDRB.YEAR = ${年度}  AND ${月份} >=2  then FINA_PPTHBDRB."line_2" else 0 end +

CASE WHEN FINA_PPTHBDRB.YEAR = ${年度} AND ${月份} >=3  then FINA_PPTHBDRB."line_3" else 0 end +

CASE WHEN FINA_PPTHBDRB.YEAR = ${年度} AND ${月份} >=4  then FINA_PPTHBDRB."line_4" else 0 end +

CASE WHEN FINA_PPTHBDRB.YEAR = ${年度} AND ${月份} >=5 then FINA_PPTHBDRB."line_5" else 0 end +

CASE WHEN FINA_PPTHBDRB.YEAR = ${年度} AND ${月份} >=6  then FINA_PPTHBDRB."line_6" else 0 end +

CASE WHEN FINA_PPTHBDRB.YEAR = ${年度} AND ${月份} >=7  then FINA_PPTHBDRB."line_7" else 0 end +

CASE WHEN FINA_PPTHBDRB.YEAR = ${年度} AND ${月份} >=8  then FINA_PPTHBDRB."line_8" else 0 end +

CASE WHEN FINA_PPTHBDRB.YEAR = ${年度} AND ${月份} >=9  then FINA_PPTHBDRB."line_9" else 0 end +

CASE WHEN FINA_PPTHBDRB.YEAR = ${年度} AND ${月份} >=10 then FINA_PPTHBDRB."line_10" else 0 end +

CASE WHEN FINA_PPTHBDRB.YEAR = ${年度} AND ${月份} >=11 then FINA_PPTHBDRB."line_11" else 0 end +

CASE WHEN FINA_PPTHBDRB.YEAR = ${年度} AND ${月份} >=12 then FINA_PPTHBDRB."line_12" else 0 end

"累计金额"

报错:

警告:11:30:30 AWT-EventQueue-0 ERROR [standard] com.fr.general.data.TableDataException: 错误代码:11300001 数据集配置错误Query:错误代码:11300001 数据集配置错误com.sap.db.jdbc.exceptions.jdbc40.SQLDataException: [314]: numeric overflow: search table error:  [6944] AttributeEngine: overflow in numeric calculation;int comma(int eq(int in(string "NUM", string '1', string '2', string '3', string '4', string '5'), int '1'), int eq(string "NUM", string '7'), int eq(string "NUM", string '8'), string jf(int "__common1", string '\xe7\x94\x9f\xe6\x84\x8f\xe9\xa2\x9d\xef\xbc\x88\xe4\xb8\x8d\xe5\x90\xab\xe5\xba\x9f\xe6\x96\x99\xef\xbc\x89', string jf(int "__common3", string '\xe7\xae\xa1\xe7\x90\x86\xe8\xb4\xb9\xe7\x94\xa8\xe5\x90\x88\xe8\xae\xa1', string jf(int "__common2", string '\xe9\x94\x80\xe5\x94\xae\xe8\xb4\xb9\xe7\x94\xa8\xe5\x90\x88\xe8\xae\xa1', string null()))), int jf(int "__common1", int '1', int jf(int "__common3", int '7', int jf(int "__common2", int '8', int null()))), string jf(int and(int eq(int int(string "YEAR"), int '2021'), int not(int isnull(string "line_11"))), string "line_11", string null()), int sqladd(int [here]sqladd(int sqladd(int sqladd(int sqladd(int sqladd(int sqladd(int sqladd(int sqladd(int sqladd(int sqladd(int box(int int(string "YEAR"), int '2021', int int(string "line_1"), int '0'), int box(int int(string "YEAR"), int '2021', int int(string "line_2"), int '0')), int box(int int(string "YEAR"), int '2021', int int(string "line_3"), int '0')), int box(int int(string "YEAR"), int '2021', int int(string "line_4"), int '0')), int box(int int(string "YEAR"), int '2021', int int(string "line_5"), int '0')), int box(int int(string "YEAR"), int '2021', int int(string "line_6"), int '0')), int box(int int(string "YEAR"), int '2021', int int(string "line_7"), int '0')), int box(int int(string "YEAR"), int '2021', int int(string "line_8"), int '0')), int box(int int(string "YEAR"), int '2021', int int(string "line_9"), int '0')), int box(int int(string "YEAR"), int '2021', int int(string "line_10"), int '0')), int box(i

FineReport Basis 发布于 2022-2-9 13:43 (编辑于 2022-2-9 13:55)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
snrtuemcLv8专家互助
发布于2022-2-9 13:57

检查下,是不是数据超过int最大值了,目前int最大是15为数字,超过就溢出了

  • Basis Basis(提问者) 应该是这个问题,这个有什么解决办法。
    2022-02-09 14:05 
  • snrtuemc snrtuemc 回复 Basis(提问者) 你把else 0 改成else 0.00试试
    2022-02-09 14:05 
  • Basis Basis(提问者) 牛,可以了。
    2022-02-09 14:21 
最佳回答
0
luojian0323Lv7资深互助
发布于2022-2-9 13:46

应该是数据类型转换问题,在数据库中调试好再写到数据集里。

  • Basis Basis(提问者) 应该用哪种数据类型,能说的具体一点吗
    2022-02-09 13:53 
  • luojian0323 luojian0323 回复 Basis(提问者) 比如你这个累计金额如果有的结果取到的是字符类型,你用case when else 0 就是产生类型不匹配情况 需要强制转换成数据类型,比如 double
    2022-02-09 14:00 
最佳回答
0
CD20160914Lv8专家互助
发布于2022-2-9 13:51

SUM(CASE WHEN FINA_PPTHBDRB.YEAR = ${年度} AND ${月份} >=7 then FINA_PPTHBDRB."line_7" else 0 end +

为什么7月份这里就要多一个sum???

  • Basis Basis(提问者) 不好意思,这个应该是要去掉的。原代码里边没有SUM,我改一下。
    2022-02-09 13:55 
  • CD20160914 CD20160914 回复 Basis(提问者) 先不要写12个月相加累计,先写1个月的。看会不会报错。如果不报错。依次再+2月,3月的看。。这样才能找到问题
    2022-02-09 13:57 
  • Basis Basis(提问者) 回复 CD20160914 累加到前10个月是不会报错的, 累计到第十一月就报错;如果把前边的几个月删掉,累计到11月、12月也没有问题。
    2022-02-09 14:03 
  • 3关注人数
  • 351浏览人数
  • 最后回答于:2022-2-9 13:57
    请选择关闭问题的原因
    确定 取消
    返回顶部