select hm,max(kssj) maxkssj,
(select max(kssj) from tab where hm=t1.hm and kssj<maxkssj) secondkssj
from tab t1 group by hm试试看这样思路去写

解决方案 »

  1.   

    楼主就是要取第二新的记录吗?试试看这样写速度如何.我没有这么多记录,没测试.select * from (select rownum r,a.* from (select  newsid,newdate from oa_news order by newdate desc) a ) where r=2
      

  2.   

    个人认为,单纯通过优化SQL语句的写法来提高查询速度不太现实,以下供参考:
    1、建立合适的索引,在hm和ksrq上建立索引;
    2、将查询写成存储过程,查询结果写到一张新表中;
    3、至于SQL语句我建议这样写:
    select a.hm,max(a.ksrq) from tablename1 a, tablename1 b where a.hm=b.hm and a.ksrq<b.ksrq
      

  3.   

    忘了group by,应该是
    select a.hm,max(a.ksrq) from tablename1 a, tablename1 b where a.hm=b.hm and a.ksrq<b.ksrq
    group by a.hm