Окончательный тип данных DECIMAL(5,5)
, поэтому нет места для значения 1.0
.
SELECT ROUND(0.99535, 2)
-- it would round to 1.0000 but it is to big for DECIMAL(5,5)
<=>
SELECT CAST(1 AS numeric(5,5))
-- Arithmetic overflow error converting int to data type numeric.
Проверка метаданных:
SELECT name, system_type_name
FROM sys.dm_exec_describe_first_result_set
(N'SELECT ROUND(0.99535, 2) AS result', null, 0) ;
-- name system_type_name
-- RESULT numeric(5,5)
DBFiddle Demo
Чтобы избежать этой проблемы, вы можете изменить точность на 6.
SELECT ROUND(CONVERT(NUMERIC(6,5), 0.99535),2)
DBFiddle Demo 2