舍入SQL Server中的值

问题描述 投票:2回答:1

我正在寻找下面的值

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

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

我如何在SQL中应用。

sql sql-server tsql decimal rounding
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.