Действительно ли это возможно к легко круглому число до ближайших 100 (или 1000, 500, 200 и т.д.) в SQL Server?
Так:
720-> 800
790-> 800
1401-> 1500
Следующее должно работать. Прочитав ваш вопрос, я не совсем уверен, что вы хотите вернуть 100. Для этого 100 возвращает 100.
select floor((X + 99) / 100) * 100;
Это дает следующие результаты:
0 -> 0
1 -> 100
99 -> 100
100 -> 100
101 -> 200
Вы можете использовать этот код, предполагая, что ваша сумма
имеет тип int. Если нет, вам нужно будет выполнить приведение, поэтому вы получите целочисленное деление.
If amount % 100 != 0 Then
roundedAmount = ((amount / 100) * 100) + 100
Else
roundedAmount = amount
Вы можете упаковать это в пользовательскую функцию .
Один вариант было бы использовать функцию CEILING () следующим образом:
SELECT CEILING(@value/100.0) * 100
Вам может потребоваться сначала преобразовать ваше значение в десятичное, в зависимости от его типа.
Не существует встроенной функции, которая это сделает, но есть множество простых математических трюков, которые это сделают. Пример:
DECLARE @Foo int
SET @Foo = 720
print @Foo
print (@Foo + 100) % 100
PRINT @Foo - (@Foo + 100) % 100