舍入SQL Server中的值

时间:2018-03-01 06:30:10

标签: sql sql-server tsql decimal rounding

我正在寻找下面的值

10.5  -> 11.00
28.35 -> 28.50
17.85 -> 18.00

条件是否是值< 50然后舍入到.50否则它将舍入到1。

我如何在SQL中应用。

1 个答案:

答案 0 :(得分:2)

尝试这个逻辑:

SELECT
    value AS old_value,
    CASE WHEN value < 50
         THEN CEILING(value*2) / 2
         ELSE CEILING(value) END AS new_value
FROM yourTable;

在审核您的评论后,我实际上支持此查询中的逻辑。以下是我在测试时生成的结果:

screen shot of test data

Demo

请注意10.5映射到自身,而不是11.0。这样做的原因是您已将0.5级别定义为舍入的停止间隔。将其他数字舍入到最近的0.5,并停在那里是没有意义的,但10.5应该继续11.0