Teradata - 计算期间发生数值溢出

Teradata - Numeric overflow occurred during computation

我的一个 Teradata 查询中的计算出现问题。我正在将两个数字相乘,但在 运行 查询时出现 "Numeric overflow occurred during computation." 错误。我 运行 是两个字段的类型,它们是 DECIMAL(18,15) 和 DECIMAL(18,9)。当我进行除法时,我尝试将它们都转换为 DECIMAL(18,18),但它仍然会抛出错误。这是计算。 UNITS 是 18,15,PRICE 是 18,9。任何人都可以给我任何解决此问题的提示吗?

cast(UNITS as DECIMAL(18,18))* cast(PRICE as DECIMAL(18,18)) as  NEW_CALC

谢谢,

克雷格

你使用了错误的数据类型,DECIMAL(18,15)表示18位数字,其中15位是小数,所以最大值是999.999999999999999

当您将两位小数相乘时,小数位数相加,NEW_CALC 得到 38 位小数。做一个 TYPE(cast(UNITS as DECIMAL(18,18))* cast(PRICE as DECIMAL(18,18))).

这会起作用:

cast(UNITS as DECIMAL(38,15))* PRICE

但是你最好将列的数据类型更改为 (18,2) 或 (18,4) 之类的东西,我认为没有人使用超过 4 位的价格。