ROUND((SUM(政治)+0.0)/ SUM(CASE WHEN 考生总分 > 0 THEN 1 ELSE 0 END),2)  AS 政治平均分

解决方案 »

  1.   

    请问楼主的“政治”字段是什么类型的呢?应该是int吧?
    试试这样:Round(AVG(convert(float,政治)),2)我刚才测试过,如果“政治”字段是float的话用楼主的语句没问题,如果是int的话用上面一句应该可以。
      

  2.   

    “政治”字段是smallint的
    我原来写的用real可以查出结果!
    但是这些都是小数点后有一大串!怎么才能让他保留两位小数??
    以前我用delphi写的程序!数据库里明明对!而查出来的结果也是小数点后一大串!
      

  3.   

    convert(decimal(18,2),AVG(政治)) AS 政治平均分,
    convert(decimal(18,2),SUM(政治)/ SUM(CASE WHEN 考生总分 > 0 THEN 1 ELSE 0 END))  AS 政治平均分
      

  4.   

    arg(avg(政治),len(政治),2)
      

  5.   

    str(avg(政治),len(政治),2)
      

  6.   

    vivianfdlpw:对smallint不适用!小数点后是两个0