你试试:----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2014-02-18 14:58:32
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[jinkou]
if object_id('[jinkou]') is not null drop table [jinkou]
go 
create table [jinkou]([name] varchar(6),[shuliang] int,[jin_e] numeric(7,2),[zhongliang] numeric(4,2))
insert [jinkou]
select '2R-102',2,45,0.06 union all
select '2R-102',762,17007.84,22.86 union all
select '2R-102',-764,-17121.24,-22.92
--------------开始查询--------------------------
SELECT  name,SUM(shuliang ),SUM(jin_e) ,SUM(zhongliang) FROM dbo.jinkou  GROUP BY name
----------------结果----------------------------
/* 
name                                                       
------ ----------- --------------------------------------- ---------------------------------------
2R-102 0           -68.40                                  0.00
*/

解决方案 »

  1.   

    直接SELECT SUM(0.06+22.86+-22.92) 这么写,结果是0.00
    另一列jin_e也有小数点,但至少整数部分结果是正确的,zhongliang 怎么也不应该出现-3呀。。
    我马上试试你的方法先
      

  2.   

    应该是数据类型的问题,我直接复制你的sql语句,没做过修改的
      

  3.   


    我用的是float类型,难道是因为这个原因?
      

  4.   

    这种小数位的数据我一般用numeric或者decimal
      

  5.   

    的确,是数据类型的问题,改成你写的那种就可以了,图省事的悲崔结果哎。。
    我还是经验少啊。
    谢谢DBA大人,果然犀利无双。