dポイントプレゼントキャンペーン実施中!

SQLServerで、小数部の丸め処理で困っています。

切り捨て → round(150.7, 0, 1)
四捨五入 → round(150.7)

というところまではなんとかわかったのですが、切り上げ処理がうまくいきません。

ceiling(150.7)やfloor(150.7)などいろいろ試してみたのですが、どうしてもうまくいきません(T-T)

どなたかわかる方がいらっしゃいましたらアドバイスお願いします。

A 回答 (4件)

s_husky です。



select ID, (round(round(数量 + (0.99) * sign(数量), 2),0,1)) from table1;

負の値については考慮していませんでした!
面目ありません!
    • good
    • 2
この回答へのお礼

おお、ばっちりうまくいきました。

ずっと悩んでたので、助かりました(^^)
ありがとうございました。

お礼日時:2006/04/21 13:31

[table1]



ID   数量
1    123.45  --> 124.00
2    123.96  --> 124.00
3    123.01  --> 124.00
4    123.10  --> 124.00
5    123.99  --> 124.00
6    123.00  --> 123.00
7    123.001 --> 123.00

このように切り上げたい場合は、

select ID, round(round(数量 + 0.99, 2),0,1) from table1;

  |ID|(expession)|
---|---------------
 1| 1|   124.00|
 2| 2|   124.00|
 3| 3|   124.00|
 4| 4|   124.00|
 5| 5|   124.00|
 6| 6|   123.00|
 7| 7|   123.00|

SQL Server のtable1のデータを上記SQL文で取得して表示した結果です。

※SQL Sever 2ヶ月の初心者です。他の方法もあると思いますが...
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

試してみましたが、マイナスの時の結果がやはりうまくいきません。

-150.7 → -149 になってしまいます(T-T)

お礼日時:2006/04/21 10:05

プログラムのif文みたいに処理するなら


case when x=floor(x) then x else floor(x+1) end

この回答への補足

お礼があとになりすいません(^^;

アドバイスありがとうございました。

補足日時:2006/04/21 10:03
    • good
    • 0
この回答へのお礼

やはりマイナスの時の結果がうまくいきません。

-150.7 の切り上げ処理結果が -150 になってしまいます。

お礼日時:2006/04/21 10:03

いや、FLOOR 関数で行けるんじゃないですか?


FLOOR(150,7 + 0.9) とかは?

150.007 とかも 151 にしたいのであれば、想定している有効桁数だけ出しちゃうとか。
FLOOR(150.007 + 0.999) とか。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

0.9を足してみましたが、マイナスの値の時正常な結果を返してくれません(T-T)

FLOOR(-150.7+0.9) → -150 になります。

できれば

(-150.7)の切り上げ結果は → -151 で返したいと思っているのです。

お礼日時:2006/04/21 10:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す