2013-05-16 171 views
9

你好,我想知道是否有一種方法來達到SQL的5的倍數?sql取整爲5的倍數?

例如,這僅向上舍入爲10,如果我設置@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
+0

重複http://stackoverflow.com/questions/15098090/rounding-up-tsql –

回答

8

使用吊裝功能

SELECT CEILING(@Order/5.0) * 5 
+2

不起作用。例如'select CEILING(2/5)* 5'產生'0',而它需要產生'5' –

+3

您需要使用除數Real'來實現這個功能。這個'SELECT CEILING(@Order/5.)* 5'工作 - 加點。 –

+0

它的工作原理,謝謝你們。 – AxV

-1

這裏是另一種同樣的問題。

declare @num as int 
set @num = 12 

select @num + case when @num%5=0 then 0 else 5-(@num%5) end 
+0

如果您投票,通常會說明原因。 –

4
SELECT CEILING(@Order/5.0) * 5 
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