现有表A
ID SectionID StageID  FinishTime
----------------------------------
1  1     1     2011-6-14
2  1     5     2011-6-16
3  1     3     2011-6-18
4  2     1     2011-6-13
5  2     2     2011-6-14
6  2     3     2011-6-15
7  1     4     2011-6-19
8  2     4     2011-6-17想筛选得到如下查询结果:
ID SectionID StageID  FinishTime
----------------------------------
7  1     4     2011-6-19
8  2     4     2011-6-17即取完成时间最大的记录,并获取其对应的ID, StageID
ID是唯一的主键请问查询语句该如何写?注:开发环境SQL2000

解决方案 »

  1.   

    create table tb(ID int,SectionID int,StageID int,FinishTime datetime)
    insert into tb select 1,1,1,'2011-6-14'
    insert into tb select 2,1,5,'2011-6-16'
    insert into tb select 3,1,3,'2011-6-18'
    insert into tb select 4,2,1,'2011-6-13'
    insert into tb select 5,2,2,'2011-6-14'
    insert into tb select 6,2,3,'2011-6-15'
    insert into tb select 7,1,4,'2011-6-19'
    insert into tb select 8,2,4,'2011-6-17'
    go
    select * from tb a where not exists(select 1 from tb where SectionID=a.SectionID and FinishTime>a.FinishTime)
    go
    drop table tb
    /*
    ID          SectionID   StageID     FinishTime
    ----------- ----------- ----------- -----------------------
    7           1           4           2011-06-19 00:00:00.000
    8           2           4           2011-06-17 00:00:00.000(2 行受影响)*/
      

  2.   

    select * from tb a 
     where FinishTime=(select max(FinishTime) from tb where SectionID=a.SectionID)