日期        姓名      分类
2009-4-5    a         1
2009-4-2    a         2
2009-3-6    a         1
2009-4-8    a         3
2009-4-2    a         1
2009-3-5    b         3
2009-3-2    b         2
2009-2-5    b         2
2009-3-8    b         3
2009-3-17   b         1
2009-5-5    c         2
2009-5-2    c         2
2009-5-5    c         1
2009-5-8    c         3
2009-2-17   c         1过滤得到:只过滤出某个姓名某种分类的日期最近的记录 用ACCESS+ADO(姓名与分类不固定)
日期        姓名      分类
2009-3-6    a         1
2009-4-2    a         2
2009-4-8    a         3
2009-3-17   b         1
2009-3-2    b         2
2009-3-8    b         3
2009-5-5    c         1
2009-5-5    c         2
2009-5-8    c         3

解决方案 »

  1.   

    select * from 表 where 姓名+分类+日期 
    in(select 姓名+分类+Max(日期) from 表 group by 姓名,分类)
      

  2.   

    SELECT MAX(日期) AS 日期,姓名,分类 FROM Table GROUP BY 姓名,分类
      

  3.   

    這是什麽規律呀,爲什麽
    2009-4-5    a        1 
    2009-3-6    a        1 
    取2009-3-6    a        1 

    2009-5-5    c        1 
    2009-2-17   c        1 
    取2009-5-5    c        1 
      

  4.   

    为什么都用max啊,我觉得应该用min啊。
    SELECT MIN(日期) AS 日期,姓名,分类 FROM Table GROUP BY 姓名,分类 ORDER BY 姓名,分类
      

  5.   

    最近的记录,应该是时间最大的,所以用max而不用min
      

  6.   


    这个可以。
    我还有一个问题请教,这个表中还有其它字段
    日期        姓名      分类     时间那么是不是应该写成:SELECT MAX(日期) AS 日期,MAX(时间) AS 时间,姓名,分类 FROM Table GROUP BY 姓名,分类其它没有指定到GROUP BY后的字段都要加MAX呢?(我的试验是这样的)那么取日期最大的是不是要把MAX(日期) AS 日期放置在最前面,也就是哪个取最大值字段在最前就取哪个字段?还有一种就是:SELECT MAX(日期) AS 日期,姓名,分类 FROM Table GROUP BY 姓名,分类,时间后边的正确吗?