Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SUM-Funktion addiert nicht richtig

Ich bin mir bei Ihrem Datentyp nicht sicher. Aber sehen Sie sich die folgenden Beispiele für zurückgegebene Werte an. In MSSQL 2012 scheint Ihre Situation dem Datentyp REAL zu entsprechen. Während MONEY, FLOAT, DECIMAL, DOUBLE PRECISION Rückgabe 72200,00 REAL gibt 72199,9998321533 zurück. Siehe unten:

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

Möglicherweise möchten Sie den Spaltendatentyp ändern (wenn es sich nicht um den gewünschten Typ handelt, wurde er möglicherweise versehentlich aus dem Dropdown-Menü von SQL Studio usw. festgelegt) oder den Wert als einen der oben genannten Datentypen umwandeln, der das gewünschte 72200,00