Рейтинг:
4
Richard Deeming
Когда вы делите два целых числа, результат всегда будет усечен. Если вы хотите округлить результат, то одно из значений должно быть типом с плавающей запятой.
ROUND(CONVERT(real, SUM([turnoverSM (%)])) / COUNT(DISTRICT), 0)
Раунд (Transact-SQL) | Microsoft Docs[
^]
Кроме того, в случае, если вы еще не поняли этого, это
чрезвычайно плохая идея для имен таблиц или столбцов, содержащих пробелы или другие специальные символы. Если это возможно, вам следует изменить структуру базы данных, переименовав столбцы таким образом, чтобы они использовали только буквенно-цифровые символы.
istudent
Я протестировал Select ROUND((1060/14),0) в результате он все еще возвращает 75
Richard Deeming
Потому что оба 1060
и 14
это целые числа!
Попробуй: ROUND(1060. / 14, 0)
- обратите внимание на "." в конце первого числа.
istudent
Но у меня нет возможности добавить десятичную дробь в мое поле в таблице. Как мне этого добиться? если вы проверили столбец SUM([turnoverSM (%)]) , то он равен 1060
Richard Deeming
Хорошо, я думал, что это тип с плавающей запятой, так как вы явно преобразуете его в int
.
Попробуйте преобразовать его в double
вместо:
ROUND(CONVERT(double, SUM([turnoverSM (%)])) / COUNT(DISTRICT), 0)
istudent
Я конвертирую его в десятичную дробь, он возвращает 76.000000, это сработало, но я думаю, что должен просто вернуть сумму и сделать расчет в коде.
подобный этому.
Dim CriticalIndicator = "1060"
Dim District storecount = "14"
Dim ci As Int32 = конвертировать.ToInt32(Критический Индикатор)
Dim dc As Int32 = преобразовать.ToInt32(districtstorecount)
Dim HelloPercentage = (ci / dc)
Приставка.WriteLine(Строка.Формат("{0:N0}", HelloPercentage))
istudent
превращение в настоящее, сработало. Большое вам спасибо, сэр.