Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

A função SOMA não é adicionada corretamente


Não tenho certeza sobre seu tipo de dados. Mas veja os seguintes exemplos de valores retornados. No MSSQL 2012 sua situação parece corresponder ao tipo de dados REAL. Enquanto DINHEIRO, FLUTUANTE, DECIMAL, DUPLA PRECISÃO retornar 72200,00 REAL retorna 72199.9998321533. Veja abaixo:
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

Você pode querer alterar o tipo de dados da coluna (se não for um tipo desejado, talvez tenha sido definido por engano no menu suspenso do SQL Studio etc.) ou CAST o valor como um dos tipos de dados acima que retornará o 72200,00