2012-03-12 25 views
3

私はテーブルには、CoS値を求めているとのAMTデータ型はフロートであり、サンプルデータは、次のようになります。和演算子の無効なVARCHARが

Select Acct,Period,F_year, Sum(AMT) as Amt 
from dbo.Cos 
Group By Acct,Period,F_year 
Where Amt is not null 

しかし、私は:私のようなクエリを書いた

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 

このエラーが発生する:

Msg 8117, Level 16, State 1, Line 1 
Operand data type varchar is invalid for sum operator. 

誰でも手伝ってもらえますか?

答えて

15

はこれをやってみてください。

Select Acct,Period,F_year, Sum(isnull(cast(AMT as float),0)) as Amt 
from dbo.Cos 
Group By Acct,Period,F_year 
+1

いつもそう迅速です! – Taryn

+0

@lcarusまだ同じエラーメッセージが表示されています – peter

+0

@peterが私の答えを更新しました。それを試してください。 – Icarus

2

Amtは、数学的な操作のために使用されることが意図されている場合は、それはタイプDecimalなくvarcharでなければなりません。

+0

浮動小数点データ型 – peter

+0

@peter - それ以外の場合は、エラーメッセージが表示されます。それが浮動小数点型であれば、それをキャストする必要はありません。だから私はMaxxに同意します。列の型は 'varchar'であってはなりません – Leigh

3

明らかに、値「1669.57」は文字列です。それで、この価値を別のものに加えることはどういう意味ですか?

エラーメッセージは正しいです:テキスト値を一緒に追加することはできません。それが有効であれば、私は結果がどうあるべきかを知ることができませんでした。

カラムタイプを数値タイプに変更するか、それを何らかの形で変換してから追加してください。

関連する問題