select cast(avg(10.33333) as decimal(18,1)) 平均值/* 平均值 --------------------------------------- 10.3 */
select case avg when 10 then cast(avg as int) when 10.3333 then cast(avg as decimal(18,1)) end
select case when avg(colname)=cast(avg(colname) as int) then avg(colname) else cast(avg(colname) as decimal(9,1)) end
declare @f float set @f = '10.123' select round(avg(@f),1)
既然数据库里为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
--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
平均值
---------------------------------------
10.3
*/
when 10.3333 then cast(avg as decimal(18,1)) end
else cast(avg(colname) as decimal(9,1)) end
declare @f float
set @f = '10.123'
select round(avg(@f),1)
这样的话出来的都是带小数的,然后再判断。
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
--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