T-SQL轮特例

T-SQL round special cases

我需要一种在 T-SQL (SQL Server 2005) 中舍入的方法。

0.0041 -> 0.005
0.0049 -> 0.005
0.0040 -> 0.004

我已经用 ROUND() 尝试了以下 select:

SELECT ROUND(0.004, 3,1) + .001

问题是:它不适用于 0.0040 -> 0.004

这个:

SELECT CEILING(1000 * 0.0041) / 1000.0

产生:

0.005

而这个:

SELECT CEILING(1000 * 0.004) / 1000.0

产生:

0.004

试试这个:

SELECT X 
, CEILING(X * 1000) / 1000 AS X4
FROM (
SELECT 0.0041 X UNION ALL 
SELECT 0.0049 UNION ALL 
SELECT 0.0040 ) A

输出:

X                                       X4
--------------------------------------- ---------------------------------------
0.0041                                  0.005000
0.0049                                  0.005000
0.0040                                  0.004000