我有一列具有数值数据(浮点数),并且只需要舍入十进制值。

    Actual Value  Rounded Value
    2370.09 -->   2370.10
    2370.07 -->   2370.08
    2370.05 -->   2370.06
    2370.01 -->   2370.02
    2370.02 -->   2370.02
    2370.04 -->   2370.04
    2370.06 -->   2370.06
    2370.08 -->   2370.08

如果十进制值(句点之后)为奇数,则应将其增加0.01,如果其偶数为零,则该值没有变化。

我试过了SELECT ROUND(Actual Value, 1)
我该如何工作?

最佳答案

以@scsimon提供的另一个答案中的模数示例为基础,您可以在不使用以下case语句的情况下执行此操作:

DECLARE @t TABLE
(
    n numeric(10,2) NOT NULL
);
INSERT INTO @t (n)
VALUES (2370.09)
    , (2370.07)
    , (2370.06)
    , (0)
    , (1.01)
    , (1.09)
    , (1.9)
    , (9999.99);

SELECT (t.n + (t.n % 0.02))
FROM @t t;

╔══════════════════╗
║(无列名)║
╠══════════════════╣
║2370.10║
║2370.08║
║2370.06║
║0.00║
║1.02║
║1.10║
║1.90║
0.00 10000.00║
╚══════════════════╝

关于sql - 在SQL Server中舍入十进制值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52210936/

10-11 01:22