• ベストアンサー

SQLServerでの切り上げ処理

SQLServerで、小数部の丸め処理で困っています。 切り捨て → round(150.7, 0, 1) 四捨五入 → round(150.7) というところまではなんとかわかったのですが、切り上げ処理がうまくいきません。 ceiling(150.7)やfloor(150.7)などいろいろ試してみたのですが、どうしてもうまくいきません(T-T) どなたかわかる方がいらっしゃいましたらアドバイスお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#22222
noname#22222
回答No.4

s_husky です。 select ID, (round(round(数量 + (0.99) * sign(数量), 2),0,1)) from table1; 負の値については考慮していませんでした! 面目ありません!

tamzou
質問者

お礼

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

その他の回答 (3)

noname#22222
noname#22222
回答No.3

[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ヶ月の初心者です。他の方法もあると思いますが...

tamzou
質問者

お礼

アドバイスありがとうございます。 試してみましたが、マイナスの時の結果がやはりうまくいきません。 -150.7 → -149 になってしまいます(T-T)

  • 7marine
  • ベストアンサー率36% (59/160)
回答No.2

プログラムのif文みたいに処理するなら case when x=floor(x) then x else floor(x+1) end

tamzou
質問者

お礼

やはりマイナスの時の結果がうまくいきません。 -150.7 の切り上げ処理結果が -150 になってしまいます。

tamzou
質問者

補足

お礼があとになりすいません(^^; アドバイスありがとうございました。

回答No.1

いや、FLOOR 関数で行けるんじゃないですか? FLOOR(150,7 + 0.9) とかは? 150.007 とかも 151 にしたいのであれば、想定している有効桁数だけ出しちゃうとか。 FLOOR(150.007 + 0.999) とか。

tamzou
質問者

お礼

アドバイスありがとうございます。 0.9を足してみましたが、マイナスの値の時正常な結果を返してくれません(T-T) FLOOR(-150.7+0.9) → -150 になります。 できれば (-150.7)の切り上げ結果は → -151 で返したいと思っているのです。

関連するQ&A