Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

La funzione SUM non viene aggiunta correttamente

Non sono sicuro del tuo tipo di dati. Ma vedere i seguenti esempi di valori restituiti. In MSSQL 2012 la tua situazione sembra corrispondere al tipo di dati REAL. Mentre SOLDI, FLOAT, DECIMALI, DOPPIA PRECISIONE ritorno 72200.00 REALE restituisce 72199.9998321533. Vedi sotto:

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

Potresti voler cambiare il tipo di dati della colonna (se non è un tipo desiderato, forse è stato impostato per errore dal menu a discesa di SQL Studio, ecc.) o CAST il valore come uno dei tipi di dati sopra che restituirà il desiderato 72200.00