簡體   English   中英

在SQL Server中舍入十進制值

[英]Round the decimal Values in SQL Server

我有一列具有數值數據(浮點數),並且僅需要舍入十進制值。

    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;
╔══════════════════╗
║ (No column name) ║
╠══════════════════╣
║          2370.10 ║
║          2370.08 ║
║          2370.06 ║
║             0.00 ║
║             1.02 ║
║             1.10 ║
║             1.90 ║
║         10000.00 ║
╚══════════════════╝

我將使用帶有模數的case語句。 這是一種檢查最后一個數字並查看它是偶數還是奇數,然后處理簡單加法的簡單方法。

declare @var decimal(6,2) = 2370.07
select
    case 
        when right(@var,1) % 2 != 0 
        then @var + 0.01 
        else @var 
    end

或者,使用您的架構

select
    [Actual Value]
    ,[RoundedValue] = 
                      case 
                           when right([Actual Value],1) % 2 != 0 
                           then [Actual Value]+ 0.01 
                           else [Actual Value]
                      end
From Your Table

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM