Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Hàm SUM không thêm đúng

Tôi không chắc về kiểu dữ liệu của bạn. Nhưng hãy xem các ví dụ sau về các giá trị trả về. Trong MSSQL 2012, tình huống của bạn dường như tương ứng với kiểu dữ liệu REAL. Trong khi TIỀN, FLOAT, DECIMAL, ĐÔI CHÍNH XÁC trả lại 72200,00 REAL trả về 72199.9998321533. Xem bên dưới:

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

Bạn có thể muốn thay đổi kiểu dữ liệu cột (nếu nó không phải là kiểu mong muốn, có lẽ nó đã được đặt nhầm từ menu thả xuống của SQL Studio, v.v.) hoặc CAST giá trị là một trong các kiểu dữ liệu ở trên sẽ trả về mong muốn 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. Nhận root cha mẹ của con trong bảng phân cấp

  2. Tôi có thể có tham số OUTPUT tùy chọn trong một quy trình được lưu trữ không?

  3. Số điện thoại dài nhất có thể có trên toàn thế giới mà tôi nên xem xét trong SQL varchar (độ dài) cho điện thoại là gì

  4. Tính tổng chi phí sở hữu theo dõi máy chủ SQL của bạn

  5. Làm cách nào tôi có thể sao chép cơ sở dữ liệu SQL Server trên cùng một máy chủ trong SQL Server 2008 Express?