Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
dimakz Member Откуда: Сообщений: 1574 |
ДД, как написать округление по 10 сек в большую сторону, например sek 51 2 37 123 надо чтоб было sek 60 10 40 130 |
18 мар 13, 13:45 [14062363] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37139 |
; with a as ( select 51 as n union all select 2 union all select 37 union all select 123 ) select (n / 10 + 1) * 10 from a |
18 мар 13, 13:49 [14062392] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Здесь к значениям, кратным 10, прибавляется 10. Надо как-то так: ; with a as ( select 51 as n union all select 2 union all select 37 union all select 123 union all select 50 ) select n, --(n / 10 + 1) * 10, case when n%10 = 0 then n else (n / 10 + 1) * 10 end, ceiling(n / 10.0) * 10 from a |
||
18 мар 13, 14:05 [14062501] Ответить | Цитировать Сообщить модератору |
оно?
Guest |
Гавриленко Сергей Алексеевич, таким макаром 10 округлится до 20, оно так и задумано? |
18 мар 13, 14:06 [14062506] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
Если еще учесть, что требование положительности значений не было озвучено, то:; with a as ( select 51 as n union all select 2 union all select 37 union all select 123 union all select 50 union all select -45 ) select n, (n / 10 + ((sign(n % 10) + 1) / 2)) * 10 from a |
18 мар 13, 15:15 [14062945] Ответить | Цитировать Сообщить модератору |
Sekoka Member Откуда: Сообщений: 73 |
правильный будет вариант ceiling(n / 10.0) * 10, так как он округляет до целых чисел. В других вариантах с дробными числами просто прибавится 10 секунд. Еще можно с FLOOR ; with a as ( select 51. as n union all select 2 union all select 37 union all select 123 union all select 50 ) select n, (n / 10 + 1) * 10, case when n%10 = 0 then n else (n / 10 + 1) * 10 end, ceiling(n / 10.0) * 10, (FLOOR((n-1) / 10) + 1) * 10 from a |
||
19 мар 13, 11:56 [14066339] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
Sekoka, но есть же ещё и ROUND ![]() |
19 мар 13, 12:00 [14066368] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
Зачем так мучиться?; with a as ( select 51 as n union all select 2 union all select 37 union all select 123 ) select (n+9)/10*10 from a |
19 мар 13, 12:02 [14066384] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15584 |
n - n % 10 + SIGN(n % 10) * 10 |
19 мар 13, 12:06 [14066417] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |