正如问题所暗示的那样,除了0-14之间的数字外,我需要四舍五入到最接近的20,因为所有的值都不能四舍五入,因为不允许使用零值。该表不必更新为新值。目前,我仅设法将舍入或舍入到最接近的100,如下所示:
CASE WHEN ROUND(number,-2)=0 THEN CAST(ROUND(number,-2)+100 AS DECIMAL(18, 0)) ELSE CAST(ROUND(number,-2) AS DECIMAL(18,0)) END AS [NUMBER]
试试这个:
DECLARE @testValue Int = 35; SELECT CASE WHEN @testValue BETWEEN 0 AND 14 THEN 20 ELSE ROUND((@testValue * 1.0) / 20, 0) * 20 END MyRoundedValue;
可能有更理想的方法,但这是我想到的第一个解决方案。的* 1.0是迫使转换为浮点数,使得/ 20会产生分数的结果。使用将结果四舍五入,ROUND然后再乘以20得到最终的“四舍五入”值。
* 1.0
/ 20
ROUND
20
编辑以考虑到您的特殊情况0-14…
0-14