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

Откуда:
Сообщений: 166
Sql serv 2008 r2 Dev. Edition

Функция
SELECT ROUND(4.1,0) 


Вернет значение 4.
Есть ли функция (как RoundUP в Excel)
Которая вернет значение 5.
То есть округлит не до ближайшего целого, а до большего.
19 июл 12, 14:16    [12888442]     Ответить | Цитировать Сообщить модератору
 Re: Округление до большего значения  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
CEILING
19 июл 12, 14:17    [12888448]     Ответить | Цитировать Сообщить модератору
 Re: Округление до большего значения  [new]
zanderman
Member

Откуда:
Сообщений: 166
Shakill,

Спасибо.

Вдогонку еще вопрос.
Есть таблица

CREATE TABLE [dbo].[Delivery] (
   [ContractLT] int NOT NULL,
  [AdminLT] int NOT NULL,
  [TotalLT] money NULL
)
ON [PRIMARY]
GO


Выполняю запрос

UPDATE dbo.Delivery
SET TotalLT = (ContractLT+AdminLT)/7


Возвращаются целые значения. Например:
ContractLT = 24 AdminLT = 5 TotalLT = 4.14, а результат 4.
19 июл 12, 14:27    [12888523]     Ответить | Цитировать Сообщить модератору
 Re: Округление до большего значения  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
zanderman,

Делайте так
UPDATE dbo.Delivery
SET TotalLT = (ContractLT+AdminLT)*1.0/7
19 июл 12, 14:28    [12888533]     Ответить | Цитировать Сообщить модератору
 Re: Округление до большего значения  [new]
zanderman
Member

Откуда:
Сообщений: 166
Alexandr Kr.,

Все стало на месте,когда изменил типы, например:

CREATE TABLE [dbo].[Delivery] (
   [ContractLT] money NOT NULL,
  [AdminLT] money NOT NULL,
  [TotalLT] money NULL
)
ON [PRIMARY]
GO


Но при этом в полях [ContractLT] [AdminLT] хранятся только целый значения....
Подскажите,а в чем загвоздка вычислений:
int + int = (float or money)?
19 июл 12, 14:32    [12888561]     Ответить | Цитировать Сообщить модератору
 Re: Округление до большего значения  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
zanderman, деление двух интов дает на выходе тоже инт (т.е. 4 в вашем примере), и только потом он приводится к типу приемника.
поэтому для более точного деления надо обеспечить чтобы хотя бы один из операндов был с точкой
19 июл 12, 14:34    [12888582]     Ответить | Цитировать Сообщить модератору
 Re: Округление до большего значения  [new]
zanderman
Member

Откуда:
Сообщений: 166
Shakill,

Все понятно.
Думаю вопрос почему так, так будет не уместен?)
19 июл 12, 14:39    [12888615]     Ответить | Цитировать Сообщить модератору
 Re: Округление до большего значения  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
zanderman, http://msdn.microsoft.com/ru-ru/library/ms190309.aspx
19 июл 12, 14:51    [12888711]     Ответить | Цитировать Сообщить модератору
 Re: Округление до большего значения  [new]
zanderman
Member

Откуда:
Сообщений: 166
Shakill
zanderman, http://msdn.microsoft.com/ru-ru/library/ms190309.aspx


Thx U!
19 июл 12, 14:54    [12888734]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить