我在Sybase Iq中收到错误,因为聚合函数(AVG和SUM)正在改变列的大小,当我在目标列中插入聚合函数列的值时,结果对于目标列来说是如此之大 .
例:
Salary
-----------
0,4565
0,4555
0,4399
..
..
在我的程序中,我需要写
SUM(salary)/AVG(salary)
当我写它
select SUM(salary)/AVG(salary) as AVG_Salary
from mytable
group by salary
我记得那个结果
AVG_Salary
----------------
0,425000000000000000000000000
0,455000000000000000000000000
0,442132124300000000000000000
1,545646464743879540386969949
...
...
这是为什么?如果尝试绕它,它也不起作用,
我能做什么?
谢谢你的答案 .
作为建议我尝试做
cast(AVG_Salary) as decimal (12,9) --the size of my destination column
它也不起作用 . 我收到错误“数据类型转换不可能”
2 回答
作为标准SybaseIQ与聚合函数显示完整的结果,但十进制应该不是您的目标表中的问题 . 如果你试过转换器
并且您遇到“数据类型转换不可能”的问题仅仅是因为您的数据太大了 .
我的意思是它可以做到这一点:
问题来自你的聚合函数SUM,可能它会使结果如此之大,并且在这种情况下“Cast”不起作用,因为转换减少(圆)小数但不是减少数量的方法 . 这就是为什么你收到“数据类型转换”的问题,它不是小数问题,这是你的数字太大的问题 .
如果你不想要这个,请使用cast(avg(...)作为数字(9,4))