sql - 向上舍入 5 美分
问题描述
我有下一个查询。
ALTER FUNCTION [dbo].[Test] (@i DECIMAL(10, 2))
RETURNS DECIMAL(10, 2)
AS
BEGIN
DECLARE @j DECIMAL(10, 2)
SET @j = @i - floor(@i)
RETURN CASE
WHEN @j < 0.25
THEN floor(@i)
WHEN @j < 0.75
THEN floor(@i) + 0.5
ELSE ceiling(@i)
END
END
return case when @j<0.25 then floor(@i) when @j<0.75 then floor(@i)+0.5 else ceiling(@i) end
END
这是 0.5 的回合,但我怎样才能将其更改为始终以 0.05 进行四舍五入,除非它已经是 0.05 的回合?
解决方案
您可以使用以下ceiling()
功能:
ceiling(@i / 0.05) * 0.05
这似乎比您尝试做的要简单得多。