select a.*
from 表 a join(
select 姓名,生效日期=max(生效日期) from 表 group by 姓名
)b on a.姓名=b.姓名 and a.生效日期=b.生效日期

解决方案 »

  1.   

    参考:
    name:姓名
    num:日期select name,num=(select top 1 num from emp a where name=b.name order by num desc)
    from (select distinct name from emp)b
      

  2.   

    zjcxc(邹建)的代码有用。但我也象 internetcsdn(公元1979年8月10日) 一样好奇,希望能解释一下。让我们学习学习。
    internetcsdn(公元1979年8月10日)的代码我不能用啊。
      

  3.   

    TO:internetcsdn(公元1979年8月10日) 
    没有能正确执行出来。
      

  4.   

    还可以这样写:(语句比较简洁)select 姓名,max(工作岗位),max(生效日期) from 表 group by 姓名
      

  5.   

    TO: SoarInAir(亮子)
    你的代码不能得到一个正确的结果。比如说:我的表中有这样同一个人的信息:员工编号 员工姓名 工作岗位                         生效日期
    -------------------------------------------------------------
    B159 冯小钢 品质保证部检查组进货检查    2004年3月14日
    B159 冯小钢 品质保证部检查组出荷检查工责    2004年4月29日根据你的代码,会得出一个错误的结果:
    B159 冯小钢 品质保证部检查组进货检查    2004年4月29日事实上,这条查询记录是错误的。但根据zjcxc(邹建)的代码,就能得到正确的结果。我是根据这条记录来判断代码的正确与否的。