У вас есть два целых числа - 10
и 100
. Поэтому при рассмотрении оператора деления система решает выполнить целочисленное деление. Целочисленное деление игнорирует любой остаток и не может привести к десятичному результату, поэтому результат равен 0
.
. Неважно, что вы впоследствии планируете сохранить результат в decimal(10,2)
.
Один способ решить эту проблему - использовать нецелое число в качестве одного из входных данных для деления. Если вы не используете литералы, обычно это можно сделать, умножив один из входных данных на 1.0
:
DECLARE @remise decimal(10,2)
set @remise = (10 * 1.0) / 100
select @remise