怎么计算

解决方案 »

  1.   

    select sum(isnull(col,0)) as sumcol from tb
      

  2.   


    -- 按COL1分组,求COL2的和
    select col1,sum(isnull(col2,0)) as sumcol from tb group by col1
      

  3.   

    不爱看帮助,其实任何公司发布的产品的帮助文档,都是最好的教材SUM
    返回表达式中所有值的和,或只返回 DISTINCT 值。SUM 只能用于数字列。空值将被忽略。语法
    SUM ( [ ALL | DISTINCT ] expression ) 参数
    ALL对所有的值进行聚合函数运算。ALL 是默认设置。DISTINCT指定 SUM 返回唯一值的和。expression是常量、列或函数,或者是算术、按位与字符串等运算符的任意组合。expression 是精确数字或近似数字数据类型分类(bit 数据类型除外)的表达式。不允许使用聚合函数和子查询。返回类型
    以最精确的 expression 数据类型返回所有表达式值的和。表达式结果 返回类型 
    整数分类 int 
    decimal 分类 (p, s) decimal(38, s) 
    money 和 smallmoney 分类 money 
    float 和 real 分类 float 
     重要  当使用 CUBE 或 ROLLUP 时,不支持区分聚合,例如 AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、MAX(DISTINCT column_name)、MIN(DISTINCT column_name) 和 SUM(DISTINCT column_name)。如果使用了,Microsoft® SQL Server™ 将返回错误信息并取消查询。
    示例
    A. 在聚合和行聚合中使用 SUM
    下列示例显示聚合函数和行聚合函数之间的区别。第一个示例显示只提供汇总数据的聚合函数,第二个示例显示提供详尽数据和汇总数据的行聚合函数。USE pubs
    GO
    -- Aggregate functions
    SELECT type, SUM(price), SUM(advance)
    FROM titles
    WHERE type LIKE '%cook'
    GROUP BY type
    ORDER BY type
    GO下面是结果集:type                                                               
    ------------ -------------------------- -------------------------- 
    mod_cook     22.98                      15,000.00                  
    trad_cook    47.89                      19,000.00                  (2 row(s) affected)USE pubs
    GO
    -- Row aggregates
    SELECT type, price, advance
    FROM titles
    WHERE type LIKE '%cook'
    ORDER BY type
    COMPUTE SUM(price), SUM(advance) BY type下面是结果集:type         price                      advance                    
    ------------ -------------------------- -------------------------- 
    mod_cook     19.99                      0.00                       
    mod_cook     2.99                       15,000.00                               sum
                 ==========================
                 22.98                      
                                            sum
                                            ==========================
                                            15,000.00                  type         price                      advance                    
    ------------ -------------------------- -------------------------- 
    trad_cook    20.95                      7,000.00                   
    trad_cook    11.95                      4,000.00                   
    trad_cook    14.99                      8,000.00                                sum
                 ==========================
                 47.89                      
                                            sum
                                            ==========================
                                            19,000.00                 (7 row(s) affected)B. 计算多列的组合计 
    下例计算每类书籍的价格和预付款总和。USE pubs
    GO
    SELECT type, SUM(price), SUM(advance)
    FROM titles
    GROUP BY type
    ORDER BY type
    GO下面是结果集:type                                                               
    ------------ -------------------------- -------------------------- 
    business     54.92                      25,125.00                  
    mod_cook     22.98                      15,000.00                  
    popular_comp 42.95                      15,000.00                  
    psychology   67.52                      21,275.00                  
    trad_cook    47.89                      19,000.00                  
    UNDECIDED    (null)                     (null)                     (6 row(s) affected)