sql округление до кратного 5?

Привет мне было интересно, есть ли способ округлить до нескольких 5 в SQL?

например, это округляет только до десяти, если я установил @Order = 8 или 9, но когда это 7 или 6, он округляется до 5, мне нужно, чтобы округлить до 10, когда это 6 или 7.

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 ответов


используйте функцию потолка

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