select语句sql中的小数位

时间:2017-09-11 13:21:52

标签: sql select case average

我有一个完美的选择声明,我一直在使用。但是我注意到它不会返回超过零小数位数。我认为Excel在复制时已经考虑了因素,但事实并非如此。

我试图改变格式,但我仍然得到零小数位。我已经审查了这里的所有帖子,但是因为我使用的是Case语句,所以包含它并不简单。

Round(AVG(case when [Duration] > 0 then [Duration] end), 3) as AVGLOS,

一如既往地欢迎任何帮助。

1 个答案:

答案 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