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.

questionAnswers(3)

yourAnswerToTheQuestion