例如数据库中有N条记录,我要查询某字段为第二大的那条记录,该怎么办?不要用排降序取第二条记录的方法具体问题时这样的:某服务器,有N个客户端,会上报数据,上报的记录中有日期,并未在其他数据表中记录上报日期。现在要去统计出各个客户端最近2次上报的日期,该怎么做?要最近上报日期很好办:select 站点名,max(日期) 最后上传日期 from 上报表 group by 站点
可前一次的日期怎么办呢?
可前一次的日期怎么办呢?
t.站点名,max(t.日期) 上传日期
from
上报表 t
where
日期!=(select max(日期) from 上报表 where 站点名=t.站点名)
group by
站点
(select top 2 * from tablename order by columnname) a
order by columnname desc
UNION ALL
select 站点名,max(日期) 最后上传日期 from 上报表
WHERE 日期 NOT IN (select max(日期) 最后上传日期 from 上报表 group by 站点 )
group by 站点
如果是sql2005的话。。
select 站点,日期 as 第二大上传日期
from (select 站点,日期,rn=row_number() over(partition by 站点 order by 日期 desc) from 上报表) t
where rn=2
SELECT * FROM #T AS T WHERE n-1=(SELECT COUNT(*) FROM #T WHERE GID=T.GID AND Date>T.Date)