0

常に 0.00 になる次のコードがあります。weight_score が実際の数値であることは確かです。結果が10進数になるようにフォーマットするのを誰かが手伝ってくれますか? SQL Server 2008 を使用しており、このコードはビューにあります。どうもありがとう!

CAST(SUM(weight_score * (45/100)) as decimal(10,2)) As avg_score
4

3 に答える 3

9

45/100 は暗黙的に INT を別の INT で割ったものとして扱われ、結果として INT は 0 に丸められます。これを回避するには、それぞれに 10 進数を追加します。

CAST(SUM(weight_score * (45.0/100.0)) as decimal(10,2)) As avg_score
于 2012-04-16T19:37:34.327 に答える
0

エラーを回避したい場合は、NULLIF関数を使用できます。

于 2012-04-16T20:06:39.897 に答える
0
 45/100 is treated as INT.So change it to 45.0/100.0. 
 select CAST(SUM(weight_score * (45.0/100.0)) as decimal(10,2)) As avg_score

 Even if you write the following code you will get 0
 select (45/100)
于 2012-04-16T19:54:30.390 に答える