我收到此错误“错误:未传送Teradata行(trget):计算期间发生数字溢出”

时间:2015-06-29 05:07:23

标签: sas teradata

在proc sql(SAS)中执行teradata查询时,我收到此错误

  

错误: Teradata行未送达(trget):发生数字溢出   在计算过程中。

我正在使用SAS EG 9.3。 我尝试增加假脱机空间,然后尝试使用mode=teradat

查询很大,有很多sum,max和count函数。 谁能告诉我如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

它绝对不是MAXMIN,而且可能不是导致该错误的COUNT,因为这会在Teradata中返回INTEGER模式和ANSI模式下的DECIMAL(15)

乘法或SUMming INTEGER可能会导致溢出。

如果系统的 MaxDecimal 设置与38不同,则DECIMAL也相同。运行SELECT TYPE(10000000000. * 10000000000.);并检查它是否返回小于DECIMAL(22,0)

要修复此错误,您必须将第一个操作数转换为更高精度的DECIMAL(或TD14中更好的NUMBER(*)),但是当您将数据返回到SAS时,您可能只使用FLOAT,因为这是本机数字类型在SAS:

CAST(colA AS FLOAT) * colB

SUM(CAST(colA AS FLOAT))

答案 1 :(得分:0)

如果您有太多观察结果,COUNT会导致溢出。使用CAST(COUNT(*)作为FLOAT)。