¿Por qué la precisión disminuye cuando se suma la suma a otro número?
Me he encontrado con el siguiente error (o característica) en SQL Server.
Cuando yo usoSUM (*column*)
dóndecolumn
tiene unnumeric(18, 8)
escriba y multiplíquelo por cualquier otro número (entero o decimal) que la precisión del resultado esté reduciendo anumeric(18, 6)
.
Aquí está el script de ejemplo para demostrar.
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
El resultado de la segunda consulta SELECT
0.000000 0.00000006 -0.00000006 0.000000
Como puedes ver entonces multiplico SUMA el resultado es 0.000000
¿Alguien podría explicar el extraño comportamiento?
UPD. Ejecuté esta consulta en SQL Management Studio en 2000, 2005 y 2008 SQL Server.