sql >> Base de Datos >  >> RDS >> Sqlserver

La función SUMA no suma correctamente

No estoy seguro acerca de su tipo de datos. Pero vea los siguientes ejemplos de valores devueltos. En MSSQL 2012, su situación parece corresponder al tipo de datos REAL. Mientras DINERO, FLOTANTE, DECIMAL, DOBLE PRECISIÓN devuelve 72200.00 REAL devuelve 72199.9998321533. Ver a continuación:

CREATE TABLE #tempso (Amount money, GRPS int);

INSERT INTO #tempso(Amount, GRPS) VALUES
('65025.00',355),
('-2500.00',355),
('7014.40',355),
('725.62',355),
('241.67',355),
('1209.57',355),
('241.87',355),
('241.87',355)

SELECT GRPS,SUM(Amount) AS AMT FROM #tempso GROUP BY  GRPS

ALTER TABLE #tempso ALTER COLUMN Amount float
SELECT GRPS,SUM(Amount) AS AMT FROM #tempso GROUP BY  GRPS

ALTER TABLE #tempso ALTER COLUMN Amount decimal(10,2)
SELECT GRPS,SUM(Amount) AS AMT FROM #tempso GROUP BY  GRPS

ALTER TABLE #tempso ALTER COLUMN Amount DOUBLE PRECISION
SELECT GRPS,SUM(Amount) AS AMT FROM #tempso GROUP BY  GRPS

        --------------- 
RETURNS:|355 72200.00 |
        ---------------

ALTER TABLE #tempso ALTER COLUMN Amount REAL
SELECT GRPS,SUM(Amount) AS AMT FROM #tempso GROUP BY  GRPS

        ----------------------  
RETURNS:|355 72199.9998321533 |
        ----------------------

DROP TABLE #tempso

Es posible que desee cambiar el tipo de datos de la columna (si no es el tipo deseado, tal vez se configuró por error en el menú desplegable de SQL Studio, etc.) o CAST el valor como uno de los tipos de datos anteriores que devolverán el 72200.00