SQL 按重要性向下舍入(相当于 excel 的楼层函数)



我需要SQL中模仿Excel's Floor()函数的东西。SQL的FLOOR()函数仅需一个参数,然后将其圆向下到最接近的整数。但是我需要能够选择重要性,例如在Excel的FLOOR()函数中。

示例:在Excel FLOOR(6.03,.125) = 6.00FLOOR(6.63,.125) = 6.625中但是到目前为止,我已经尝试了ROUND(6.63,.125),并且= 7.00ROUND(6.63,.125,1) = 6.00

有人知道我如何实现自己的目标吗?

Declare @V float = 6.3
Declare @F float = 0.125
Select Floor(@V)+floor((@V-Floor(@V))/@F)*@F

返回

6.25

编辑 - 如果需要UDF

CREATE Function [dbo].[udf-Stat-Round-To](@Value float,@Round float)
Returns Float
As
Begin
Return case when @Round=0 then NULL else Floor(@Value)+Floor((@Value-Floor(@Value))/@Round)*@Round end
End
-- Syntax Select [dbo].[udf-Stat-Round-To](10.13,.125) -- 10.125

最新更新