Я столкнулся со следующей ошибкой (или функцией) в SQL Server.
Когда я использую SUM (*column*)
, где column
имеет тип numeric(18, 8)
и умножает его на любое другое число (целое или десятичное), точность результата уменьшается до numeric(18, 6)
.
Вот пример script, чтобы продемонстрировать.
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
Как вы можете видеть, я умножаю SUM, результат - 0.000000
Может ли кто-нибудь объяснить странное поведение?
UPD. Я выполнил этот запрос в SQL Management Studio 2000, 2005 и 2008 SQL Server.