13

你好我想知道有没有办法在 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
4

4 回答 4

12

使用天花板功能

SELECT CEILING(@Order / 5.0) * 5
于 2013-05-16T16:18:40.493 回答
4
SELECT CEILING(@Order / 5.0) * 5
于 2013-05-16T16:23:33.917 回答
2

如果您不想使用内置函数并避免使用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
于 2013-05-16T19:27:49.613 回答
-1

这是解决同一问题的另一种方法。

declare @num as int
set @num = 12

select @num + case when @num%5=0 then 0 else 5-(@num%5) end 
于 2013-05-16T16:22:19.033 回答