2016-10-14 16 views
0

次のクエリを実行していますが、オペランドデータ型varcharがサム演算子のエラーに無効です。 accountnatureフィールドはvarcharフィールドですが、INTとしてキャストしていますが、まだエラーが発生しています。SQL - オペランドデータ型varcharがサム演算子で無効です

SELECT 
    'Qualified' =sum(case when (cast(AccountNature AS Int)) in ('a','b') then '1' end) 

from agreement 

group by accountnature 

私が間違ってやっていることや修正方法についての考えはありますか?おかげさまで

+0

"AccountNature"カラムの実際のデータ型は何ですか? – yuvi

+0

AccountNature(varchar(2)、nullではない) – BIReportGuy

+0

私の知る限り、特定のカラムに1,2,3などの値がある場合これはできます。しかし、a、b、c ...のような値がキャストできない場合は、 – yuvi

答えて

5

はこれを試してみてください:あなたはchar型に比較しているので、あなたはそれを整数にキャストする必要はありません

select [qualified] = sum(case when AccountNature in ('a','b') then 1 else 0 end) 
from agreement 

SELECT 
    'Qualified' = sum(case when AccountNature in ('a','b') then 1 ELSE 0 end) 
from agreement 
group by accountnature 
+0

がこのキャスト関数であったと思います – yuvi

+3

@RajaYuvi - キャストを使う必要はありません。 –

+0

はい、私はそれを試みた、それは働いていなかったので、私は鋳造に行ったが、私はちょうど正しい方向に私を指摘したと思う。私は '1'の周りに一重引用符を持っています。私はちょうどそれを削除し、それは動作します。 – BIReportGuy

1

はこれを試してみてください。

関連する問題