2012-03-24 15 views
0

私は次のクエリデータ型変換

select distinct pincode as Pincode,CAST(Date_val as DATE) as Date, 
SUM(cast(megh_38 as int)) as 'Postage Realized in Cash', 
SUM(cast(megh_39 as int)) as 'MO Commission', 
from dbo.arrow_dtp_upg 
group by pincode,Date_Val 

を実行しようとしていますが、私は、「データ型intにはnvarchar値'82 0.25' を変換する際の変換に失敗しました。」というエラーを取得しています

間違ったデータ型を使用していますか?

答えて

1

文字列「82.25」は整数ではない浮動小数点型(または小数点型)を表します。したがって、floatが必要な場合はcast(megh_38 as float)を使用してください。

整数部分のみが必要な場合は、floor(cast(megh_38 as float))を使用してください。

+0

フロートを使用しようとしましたが、私は取得しています 'データ型nvarcharをfloatに変換中にエラーが発生しました。 警告:Null値は、集計または他のSET操作によって削除されます。 'エラーとして。 – user87

+0

あなたの値の1つがNULLです。これをゼロとして扱いたい場合は、 'coalesce(floor(cast(meg_38 as float))、0)'を使用します。 – Phil

0

あなたはこれを試みることができる:

cast(megh_38 as decimal(10,2)) 
cast(megh_39 as decimal(10,2)) 
0

一つの可能​​性のある問題は、区切り文字(カンマ対ドット)です。 質問 - なぜストア浮動小数点またはint値のnvarcharを好むのですか?多分小数または浮動小数点のほうが良い解決法でしょうか?