Por que a precisão está diminuindo quando multiplica a soma para outro número
Eu encontrei com seguinte bug (ou recurso) no SQL Server.
Quando eu usoSUM (*column*)
Ondecolumn
tem umnumeric(18, 8)
digite e multiplique-o para qualquer outro número (inteiro ou decimal), a precisão do resultado é reduzida paranumeric(18, 6)
.
Aqui está o script de exemplo para demonstrar.
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
O resultado da segunda consulta SELECT
0.000000 0.00000006 -0.00000006 0.000000
Como você pode ver então eu multiplico SUM o resultado é 0,000000
Alguém poderia explicar o estranho comportamento?
UPD. Eu executei essa consulta no SQL Management Studio em 2000, 2005 e 2008 do SQL Server.