2013-05-16 20 views
9

Witam, zastanawiałem się, czy istnieje sposób na zaokrąglenie do wielokrotności 5 w SQL?sql zaokrąglanie do wielokrotności 5?

Przykładowo ten uzupełnia tylko do dziesięciu Jeżeli ustawić @Order = 8 lub 9, a gdy jest 7 lub 6, że uzupełnia się do 5, potrzebna do zaokrąglenia do 10, gdy jest to 6 lub 7

declare @Order int 

set @Order = 7 

select round(cast(@Order as float)/cast(5 as float),0)*5 

trzeba

  • @Order = 1,2,3,4 zaokrąglić do 5
  • @Order = 6,7,8,9 zaokrąglić do 10
  • @Order = 11,12,13,14 zaokrąglić do 15
+0

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

Odpowiedz

8

Użyj funkcji sufit

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

Nie działa. np. "wybierz CEILING (2/5) * 5" tworzy '0', podczas gdy musi wyprodukować' 5' –

+3

Musisz zrobić divisor 'Real', aby to działało. To 'SELECT CEILING (@Order/5.) * 5' działa - z dodaną kropką. –

+0

To działa, dzięki chłopaki. – AxV

-1

Oto inne podejście do tego samego problemu.

declare @num as int 
set @num = 12 

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

W przypadku głosowania w dół często pomocne jest podanie przyczyny. –

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

Jeśli nie chcesz korzystać z wbudowanych funkcji i unikać CASE oświadczenia, spojrzeć na ten jeden:

select @Order, 5 * ((@Order+4)/5) 

Dla pierwszego wyniku numer 20 będzie wyglądać :

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 
Powiązane problemy