- ベストアンサー
SQLServerでの切り上げ処理
SQLServerで、小数部の丸め処理で困っています。 切り捨て → round(150.7, 0, 1) 四捨五入 → round(150.7) というところまではなんとかわかったのですが、切り上げ処理がうまくいきません。 ceiling(150.7)やfloor(150.7)などいろいろ試してみたのですが、どうしてもうまくいきません(T-T) どなたかわかる方がいらっしゃいましたらアドバイスお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
s_husky です。 select ID, (round(round(数量 + (0.99) * sign(数量), 2),0,1)) from table1; 負の値については考慮していませんでした! 面目ありません!
その他の回答 (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ヶ月の初心者です。他の方法もあると思いますが...
お礼
アドバイスありがとうございます。 試してみましたが、マイナスの時の結果がやはりうまくいきません。 -150.7 → -149 になってしまいます(T-T)
- 7marine
- ベストアンサー率36% (59/160)
プログラムのif文みたいに処理するなら case when x=floor(x) then x else floor(x+1) end
お礼
やはりマイナスの時の結果がうまくいきません。 -150.7 の切り上げ処理結果が -150 になってしまいます。
補足
お礼があとになりすいません(^^; アドバイスありがとうございました。
- temtecomai2
- ベストアンサー率61% (656/1071)
いや、FLOOR 関数で行けるんじゃないですか? FLOOR(150,7 + 0.9) とかは? 150.007 とかも 151 にしたいのであれば、想定している有効桁数だけ出しちゃうとか。 FLOOR(150.007 + 0.999) とか。
お礼
アドバイスありがとうございます。 0.9を足してみましたが、マイナスの値の時正常な結果を返してくれません(T-T) FLOOR(-150.7+0.9) → -150 になります。 できれば (-150.7)の切り上げ結果は → -151 で返したいと思っているのです。
お礼
おお、ばっちりうまくいきました。 ずっと悩んでたので、助かりました(^^) ありがとうございました。