Varchar对Sum运算符无效

时间:2012-03-12 19:13:29

标签: sql sql-server sql-server-2008 tsql

我有一个名为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.

任何人都可以帮助我吗?

3 个答案:

答案 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