Вокруг ** к ближайшим 100 в SQL Server

Действительно ли это возможно к легко круглому число до ближайших 100 (или 1000, 500, 200 и т.д.) в SQL Server?

Так:

720-> 800
790-> 800
1401-> 1500

40
задан sth 19 July 2010 в 15:28
поделиться

4 ответа

Следующее должно работать. Прочитав ваш вопрос, я не совсем уверен, что вы хотите вернуть 100. Для этого 100 возвращает 100.

select floor((X + 99) / 100) * 100;

Это дает следующие результаты:

0 -> 0
1 -> 100
99 -> 100
100 -> 100
101 -> 200
51
ответ дан 27 November 2019 в 01:17
поделиться

Вы можете использовать этот код, предполагая, что ваша сумма имеет тип int. Если нет, вам нужно будет выполнить приведение, поэтому вы получите целочисленное деление.

If amount % 100 != 0 Then
   roundedAmount = ((amount / 100) * 100) + 100
Else
   roundedAmount = amount

Вы можете упаковать это в пользовательскую функцию .

0
ответ дан 27 November 2019 в 01:17
поделиться

Один вариант было бы использовать функцию CEILING () следующим образом:

SELECT CEILING(@value/100.0) * 100

Вам может потребоваться сначала преобразовать ваше значение в десятичное, в зависимости от его типа.

16
ответ дан 27 November 2019 в 01:17
поделиться

Не существует встроенной функции, которая это сделает, но есть множество простых математических трюков, которые это сделают. Пример:

DECLARE @Foo int
SET @Foo = 720

print @Foo
print (@Foo + 100) % 100
PRINT @Foo - (@Foo + 100) % 100
0
ответ дан 27 November 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: