[英]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.