Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 шаг округления 30 сек  [new]
dimakz
Member

Откуда:
Сообщений: 1574
как сделать шаг округления 30 сек?
например:
sek
10
54
80
185
93

надо получить:
30
60
90
210
120
16 май 11, 09:23    [10656197]     Ответить | Цитировать Сообщить модератору
 Re: шаг округления 30 сек  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
dimakz,

sec - СИ

округление - третий класс, вторая четверть.
16 май 11, 09:25    [10656211]     Ответить | Цитировать Сообщить модератору
 Re: шаг округления 30 сек  [new]
dimakz
Member

Откуда:
Сообщений: 1574
не помню подскажите как
16 май 11, 09:29    [10656218]     Ответить | Цитировать Сообщить модератору
 Re: шаг округления 30 сек  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
dimakz
не помню подскажите как

мозг включить, не ?

;WITH T AS
(
select 10 SEC
union select 54
union select 80
union select 185
union select 93
)

SELECT (ROUND(T.SEC/30,0)+1) * 30 ROUNDSEC , T.SEC FROM T
16 май 11, 09:32    [10656231]     Ответить | Цитировать Сообщить модератору
 Re: шаг округления 30 сек  [new]
Владимир СА
Member

Откуда:
Сообщений: 7915
declare @tb1 table ([sec] int)
insert into @tb1 ([sec]) values (10),(54),(80),(185),(93)

SELECT [sec], [round30]=CEILING([sec]/30.0)*30 from @tb1
16 май 11, 11:05    [10656806]     Ответить | Цитировать Сообщить модератору
 Re: шаг округления 30 сек  [new]
iljy
Member

Откуда:
Сообщений: 8711
Кину чтоли и я свои 5 копеек
declare @tb1 table (sec int)
insert into @tb1 (sec) values (10),(54),(80),(185),(93),(90)

SELECT sec, ((sec+29)/30)*30 round30 from @tb1
16 май 11, 12:32    [10657590]     Ответить | Цитировать Сообщить модератору
 Re: шаг округления 30 сек  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
iljy
Кину чтоли и я свои 5 копеек


Ога, забыли о табличке с целыми числами , всё же скуль заточен на операции над множествами )))

;WITH T AS
(
select 10 SEC
union select 54
union select 80
union select 185
union select 93
)

select T.*
,V.number * 30 SPT
from T
 inner join master..spt_values V  ON (
 V.type = 'P' 
 and V.number > 0  
 AND T.SEC BETWEEN (V.number-1) * 30 AND V.number * 30  
)
16 май 11, 12:38    [10657630]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить