1

SQL Server 2008 を使用して単純なケース ステートメントを作成しようとすると、問題が発生して次のエラー メッセージが表示されます。

Msg 8114, Level 16, State 5, Line 6 Error converting data type varchar to numeric.

問題の原因となっているスクリプトを次のように分離しました。

CASE WHEN tPersonLocationHist.LocationCode = 'DC' 
        AND (tPersonJobHist.FullTimeEquivalent = 1) 
        AND (MONTH(tPersonStatusHist.LatestHireDate) < 10) 
        THEN tPersonStatusHist.NormalHoursPerWeek / 5

tPersonStatusHist.NormalHoursPerWeek は 10 進数としてフォーマットされます。しかし、私はそれを計算することができません。

任意のヒント?結果の計算は、10 進数形式 (10 進数 2 桁まで) である必要があります。

THEN ステートメントを '7.5' に変更しても、次のように返されます。

Msg 245, Level 16, State 1, Line 6 Conversion failed when converting the varchar value '7.5' to data type int.

を使用してみましCONVERT(decimal(4,2),tPersonJobHist.NormalHoursPerWeek * 7.5)たが、それもうまくいきません。

機能しているのは、次のようにすることだけですが CONVERT(int,tPersonJobHist.NormalHoursPerWeek * 7.5)、小数を削除して整数全体を与えるだけです。

おそらくおわかりのように、私は SQL の初心者であり、まだロープを学んでいるので、あなたが与えることができるどんな助けも大歓迎です。

4

2 に答える 2

0

あなたの他のケース/他のケースは varchar を返していますか? それらはすべて同じデータ型を返す必要があります。確実にするために、それらをキャスト/変換することをお勧めします。

CAST(CONVERT(decimal(4,2),tPersonJobHist.NormalHoursPerWeek * 7.5) AS varchar(50))
于 2013-05-03T18:51:43.313 に答える