物品编号    领用人    领用时间
00001    F2325221  20080504
00001    F2325887  20080302
00001    F2325234  20080501
00001    F2325221  20080507
00003    F2321188  20080504
00003    F2325221  20080502
00005    F2325254  20080504
00005    F2325220  20080603
00005    F2325234  20080705
00005    F2325221  20080515
希望得到每个物品的最后领用人和领用时间!!
那位大哥能给指点一下??!!
谢谢了

解决方案 »

  1.   

    max(领用时间)
    group by 
      

  2.   

    select 领用人,领用时间 from table where 领用时间 in (select max(领用时间) from table group by 物品编号);
      

  3.   


    补充一下
    如上例,想要的结果是:物品编号    领用人    领用时间 00001    F2325221  20080507
    00003    F2321188  20080504 
    00005    F2325234  20080705

    开始时思路和2楼类似,可是不能实现显示3列,还望各位大侠指点,工作使用,比较着急!谢谢了
      

  4.   


    select 物品编号,领用人,领用时间 from table t1 
    join (select max(领用时间),物品编号 from table group by 物品编号) t2 
    on (t1.物品编号=t2.物品编号 and t1.领用时间=t2.max(领用时间),);
      

  5.   


    select 物品编号,领用人,领用时间 from table t1 
    join (select max(领用时间),物品编号 from table group by 物品编号) t2 
    on (t1.物品编号=t2.物品编号 and t1.领用时间=t2.max(领用时间));
      

  6.   

    select * from (
    select t.no,
       t.who, 
       max(t.time) over (partition by t.no desc) 
       rownum rn
    from table t) t1 where t1.rn = 1 
      

  7.   


    写错了,应该是这个select * from (
    select t.no,
           t.who, 
           max(t.time) over (partition by t.no order by t.time desc) 
           rownum rn
    from table t) t1 where t1.rn = 1 
      

  8.   

    select *
      from t
     where (t.no, t.time) in (select t.no, max(t.time) from t group by t.no)
      

  9.   

    select *
      from t
     where (t.no, t.time) in (select t.no, max(t.time) from t group by t.no)