計算後の値が58である内部クエリに計算フィールド「MySum」があります。
この値の20%を取得する必要があります。
私が与えた場合:
MySum * 20 /100, I get 11
私が与えた場合:
((20 * CAST(MySum as decimal(6,2)))/100) , I get 11.60000
あげたら
Round(((20 * CAST(MySum as decimal(6,2)))/100), 2), I still get 11.60000
それが欲しいです、
結果が11.6の場合、12が表示され、結果が11.4の場合、11が表示されます。
値を四捨五入したい。そのための機能はありますか?
rOUND() (例を参照) SQLサーバーの関数を使用
select round(11.6,0)
結果:
12.0
ex2:
select round(11.4,0)
結果:
11.0
小数部分が必要ない場合は、できます
select cast(round(11.6,0) as int)
round 関数とlength
引数の動作を確認してください。結果の精度の動作を制御します
CAST(Round(MySum * 20.0 /100, 0) AS INT)
ご参考までに
MySum * 20/100、11を取得
これは、3つのオペランドがすべてINTの場合、SQL Serverは左から右へ整数演算を実行し、すべての中間結果を切り捨てるためです。
58 * 20 / 100 => 1160 / 100 => 11 (truncated from 11.6)
レコードについてもROUND(m、n)は結果を小数点以下n桁に返します。not n有効数字。