select 任务单,max(id) as id,max(日期) as 日期 from 表 group by 任务单

解决方案 »

  1.   

    select 表.* from 表,(select min(日期) 日期,任务单 from 表 group by 任务单) t
    where 表.任务单=t.任务单 and 表.日期=t.日期
      

  2.   

    保留最大日期的:
    select * from 表 as a where not exists (select * from 表 where 任务单=a.任务单 and 日期>a.日期)
    保留最小日期的:
    select * from 表 as a where not exists (select * from 表 where 任务单=a.任务单 and 日期<a.日期)
      

  3.   

    CREATE TABLE T(日期 DATETIME,
           任务单 NVARCHAR(20));INSERT INTO T VALUES(2004-1-29,'PLM248');
    INSERT INTO T VALUES(2004-12-12,'PLNER3');
    INSERT INTO T VALUES(2004-11-11,'PLM248');
    INSERT INTO T VALUES(2004-11-21,'PLM248');
    SELECT * FROM T;SELECT MAX(日期)AS 日期,任务单 FROM T AS T2 GROUP BY 任务单
    UNION 
    SELECT MIN(日期)AS 日期,任务单 FROM T AS T1 GROUP BY 任务单 
    你看这样行不?
      

  4.   

    sorry!上面插入时忘记打''了.CREATE TABLE T(日期 DATETIME,
           任务单 NVARCHAR(20));INSERT INTO T VALUES('2004-1-29','PLM248');
    INSERT INTO T VALUES('2004-12-12','PLNER3');
    INSERT INTO T VALUES('2004-11-11','PLM248');
    INSERT INTO T VALUES('2004-11-21','PLM248');
    SELECT * FROM T;SELECT MAX(日期)AS 日期,任务单 FROM T AS T2 GROUP BY 任务单
    UNION 
    SELECT MIN(日期)AS 日期,任务单 FROM T AS T1 GROUP BY 任务单 DROP TABLE T
    测试结果:
    2004-01-29 00:00:00.000 PLM248
    2004-11-21 00:00:00.000 PLM248
    2004-12-12 00:00:00.000 PLNER3