我有一个完美的选择声明,我一直在使用。但是我注意到它不会返回超过零小数位数。我认为Excel在复制时已经考虑了因素,但事实并非如此。
我试图改变格式,但我仍然得到零小数位。我已经审查了这里的所有帖子,但是因为我使用的是Case语句,所以包含它并不简单。
Round(AVG(case when [Duration] > 0 then [Duration] end), 3) as AVGLOS,
一如既往地欢迎任何帮助。
答案 0 :(得分:1)
数据类型是int
这是你的问题。
整数值的平均值始终为整数:
declare @t table (col int);
insert into @t values (2), (3);
select avg(col)
from @t;
----
2
所以你应该操纵小数,而不是这样的整数:
declare @t table (col int);
insert into @t values (2), (3);
select avg(col * 1.)
from @t;
---
2.500000
所以在你的情况下只需使用它:
Round(AVG(case when [Duration] > 0 then [Duration]* 1. end), 3) as AVGLOS