Почему точность уменьшается при умножении суммы на другое число
Я столкнулся со следующей ошибкой (или функцией) в SQL Server.
Когда я используюSUM (*column*)
гдеcolumn
имеетnumeric(18, 8)
введите и умножьте его на любое другое число (целое или десятичное), точность результата уменьшается доnumeric(18, 6)
.
Вот пример сценария для демонстрации.
CREATE TABLE #temp (Qnty numeric(18,8))
INSERT INTO #temp (Qnty) VALUES (0.00000001)
INSERT INTO #temp (Qnty) VALUES (0.00000002)
INSERT INTO #temp (Qnty) VALUES (0.00000003)
SELECT Qnty, 1*Qnty
FROM #temp
SELECT (-1)*SUM(Qnty), SUM(Qnty), -SUM(Qnty), SUM(Qnty) * CAST(2.234 as numeric(18,8))
FROM #temp
DROP TABLE #temp
Результат второго запроса SELECT
0.000000 0.00000006 -0.00000006 0.000000
Как вы можете видеть, тогда я умножаю СУММУ результат 0,000000
Кто-нибудь может объяснить странное поведение?
UPD. Я выполнил этот запрос в SQL Management Studio на SQL Server 2000, 2005 и 2008 гг.