使用AVG时, 若值为10,则就是10,不要10.0,
若值为10.333333,则为10.3
如何实现?

解决方案 »

  1.   

    cast(10.33333 as decimal(18,1))
      

  2.   

    select cast(avg(10.33333) as decimal(18,1)) 平均值/*
    平均值
    ---------------------------------------
    10.3
    */
      

  3.   

    select case avg when 10 then cast(avg as int)
                    when 10.3333 then cast(avg as decimal(18,1)) end
      

  4.   

    select case when avg(colname)=cast(avg(colname) as int) then avg(colname) 
    else cast(avg(colname) as decimal(9,1)) end
      

  5.   


    declare @f float
    set @f = '10.123'
    select round(avg(@f),1)
      

  6.   

    既然数据库里为INT型,那么你在AVG的时候要出来小数必须要转化一下为浮点型,如:avg(colname*1.0)
    这样的话出来的都是带小数的,然后再判断。
    select case when avg(colname*1.0)=cast(avg(colname*1.0) as int) then avg(colname*1.0) 
    else cast(avg(colname*1.0) as decimal(9,1)) end
      

  7.   


    --modify
    select case when avg(colname*1.0)=cast(avg(colname*1.0) as int) then cast(avg(colname*1.0) as int) 
    else cast(avg(colname*1.0) as decimal(9,1)) end