您好我想知道有没有办法在SQL中舍入到5的倍数?
例如,如果我设置@Order = 8或9,这只会向上舍入到10,但当它为7或6时,它会向下舍入为5,我需要它在6或7时向上舍入到10。
declare @Order int
set @Order = 7
select round(cast(@Order as float)/cast(5 as float),0)*5
我需要
@Order = 1,2,3,4
最多可达5个
@Order = 6,7,8,9
最多可达10个
@Order = 11,12,13,14
最多可达15个
使用CEILING功能
SELECT CEILING(@Order / 5.0) * 5
SELECT CEILING(@Order / 5.0) * 5
如果您不想使用内置函数并避免使用 CASE
声明,看看这个:
select @Order, 5 * ((@Order+4) / 5)
前20个数字的结果将如下所示:
number rounded
----------- -----------
1 5
2 5
3 5
4 5
5 5
6 10
7 10
8 10
9 10
10 10
11 15
12 15
13 15
14 15
15 15
16 20
17 20
18 20
19 20
20 20
这是针对同一问题的另一种方法。
declare @num as int
set @num = 12
select @num + case when @num%5=0 then 0 else 5-(@num%5) end