我有一个名为Cos的表,Amt的数据类型是Float,示例数据如下:
Acct Period F_year Amt
Detf 1 2011 Null
Detf 2 2011 Null
Detf 3 2011 1669.57
FTE 1 2011 3205.11
FTE 2 2011 0
FTE 3 2011 Null
我写了一个像:
这样的查询Select Acct,Period,F_year, Sum(AMT) as Amt
from dbo.Cos
Group By Acct,Period,F_year
Where Amt is not null
但是我收到了这个错误:
Msg 8117, Level 16, State 1, Line 1
Operand data type varchar is invalid for sum operator.
任何人都可以帮助我吗?
答案 0 :(得分:19)
尝试这样做:
Select Acct,Period,F_year, Sum(isnull(cast(AMT as float),0)) as Amt
from dbo.Cos
Group By Acct,Period,F_year
答案 1 :(得分:3)
显然,值“1669.57”是一个字符串。那么将这个值添加到另一个是什么意思呢?
错误消息正确:将文本值一起添加无效。如果它有效,我不知道结果应该是什么。
您应该将列类型更改为数字类型,或者在尝试添加之前以某种方式进行转换。
答案 2 :(得分:2)
如果Amt
旨在用于数学运算,那么它应该是Decimal
而不是varchar
。