![在这里输入的形象描述] [1]SQL Server 2008中的另一种方式来做到这一点
带来一米的自由空间,AVG和天留下正确的结果。将不得不做另一个查询来获得最新的freespace。可以使用ROW_NUMBER排名但这将带回700没有办法做到这更好的RGS
declare @top int=3
declare @dept varchar(20)='dept_a'
select * from dept
select top(@top) *
from dept
where usage<0
order by datestamp desc
select
freespace ,
avgDay,
(freespace/avgDay) as daysLeft
from
(select top(1) freespace
from dept
where deptname = @dept
order by datestamp desc) as freespace,
(select avg(usage) AvgDAy
from
(select top(@top) *
from dept
where usage < 0
and DeptName = @dept
order by datestamp desc) as AvgSel
) as AvgDay
数据http://sqlfiddle.com/#!6/210dd/1
结果系A - 920的自由空间 133平均一天 6天左 http://sqlfiddle.com/#!6/210dd/2
结果系乙 - 400自由空间 66平均一天 还剩6天 http://sqlfiddle.com/#!6/210dd/4
做*什么具体*更好?您已经抛弃了SQL和结果,并且对数据的含义以及结果的含义几乎没有描述。你能解释你实际想要到达的地方吗?此外,请将SQL作为文本发布在将来的文章中,让人们可以更轻松地启动[SQL Fiddle](http://sqlfiddle.com/)来尝试各种解决方案。 –
谢谢我已经更新了上面的sqlfiddle链接。 – winchmore