Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Funkcja SUMA nie dodaje się poprawnie

Nie jestem pewien co do twojego typu danych. Zobacz jednak poniższe przykłady zwracanych wartości. W MSSQL 2012 twoja sytuacja wydaje się odpowiadać typowi danych REAL. Podczas gdy PIENIĄDZE, FLOAT, DECIMAL, PODWÓJNA PRECYZJA powrót 7220.00 PRAWDZIWE zwraca 72199.9998321533. Zobacz poniżej:

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

Możesz chcieć zmienić typ danych kolumny (jeśli nie jest to pożądany typ, być może został ustawiony przez pomyłkę z rozwijanego menu SQL Studio itp.) lub CAST wartość jako jeden z powyższych typów danych, który zwróci pożądany 72200.00



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przykład żądania SQL Server 2008 dotyczący tworzenia kursora w pętli do rekordów

  2. Operator XOR T-SQL

  3. Bazy danych systemu SQL Server – Konserwacja MSDB

  4. Pokaż zaawansowane opcje konfiguracji serwera w SQL Server (T-SQL)

  5. Jak mogę uzyskać ostatnie 12 miesięcy od aktualnej daty PLUS dodatkowe dni do 1 dnia ostatniego miesiąca?