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

cra*_*gtb 0 sql casting teradata

我在我的一个Teradata查询中遇到了计算问题.我将两个数相乘,但我得到一个"计算过程中出现数字溢出".运行查询时出错.我在两个字段上运行了一个类型,它们是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
Run Code Online (Sandbox Code Playgroud)

谢谢,

克雷格

dno*_*eth 5

你使用错误的数据类型,一个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
Run Code Online (Sandbox Code Playgroud)

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