sql >> Databasteknik >  >> RDS >> Sqlserver

SUM-funktionen läggs inte till korrekt

Jag är inte säker på din datatyp. Men se följande exempel på returnerade värden. I MSSQL 2012 verkar din situation motsvara datatypen REAL. Medan PENGAR, FLOAT, DECIMAL, DUBBEL PRECISION returnera 72200,00 REAL returnerar 72199.9998321533. Se nedan:

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

Du kanske vill ändra kolumndatatypen (om det inte är en önskad typ, kanske den ställdes in av misstag från rullgardinsmenyn i SQL Studio, etc.) eller CAST värdet som en av ovanstående datatyper som kommer att returnera önskad 72200.00



  1. spara MySQL-inställningar

  2. Datastruktur för olika turnerings-/tävlingstyper (liga, stege, enkel-/dubbeleliminering etc.)

  3. Skapa sekvens av datum och tid

  4. Hur ger jag varje registrerad användare sin egen url med PHP?