web-dev-qa-db-ja.com

小数点を削除する丸めの時点でのSQL形式

計算後の値が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が表示されます。

値を四捨五入したい。そのための機能はありますか?

8
RMN

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)
31
Joe G Joseph

round 関数とlength引数の動作を確認してください。結果の精度の動作を制御します

1
Diego
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有効数字。

1
RichardTheKiwi