我现在有一个表TEST。
字段如下:
MEMBER_ID    RESULT     RECORD_DATE
1              23.1        2001-1-1
2               11.2        2007-2-3
1              25.1         2002-4-4
1              24.0         2003-9-1
2               13.1         2005-2-2
3                11          2007-10-11
2                 15          2008-8-8
3                 15          2008-8-1
我想查询出每个会员ID下最近一条记录,结果如下:
MEMBER_ID    RESULT     RECORD_DATE
1             24.0         2003-9-1
2              15          2008-8-8
3              15          2008-8-1
这个查询语句该怎么写?请教~~

解决方案 »

  1.   

    你的表可能存在重复值,可能是你没有显示全部列吧select distinct * from test T1
    where record_date in in(
                select max(record_date) 
                from test
                where member_id = T1.member_id
                group by record_date)
      

  2.   

    TRY IT ..
    SQL> SELECT *
      2    FROM TEST T1
      3   WHERE NOT EXISTS (
      4                 SELECT 1
      5                   FROM TEST T2
      6                  WHERE T1.MEMBER_ID = T2.MEMBER_ID
      7                    AND T1.RECORD_DATE < T2.RECORD_DATE
      8                ); MEMBER_ID    RESULTS RECORD_DATE
    ---------- ---------- -----------
             1         24 9/1/2003
             2         15 8/8/2008
             3         15 8/1/2008SQL> 
      

  3.   

    select distinct * from test T1 
    where record_date = ( 
                          select max(record_date) 
                            from test 
                           where member_id = T1.member_id 
                         )
      

  4.   

    SELECT *
           FROM TEST
          WHERE NOT EXISTS (
                        SELECT 1
                          FROM TEST T1
                         WHERE MEMBER_ID = T1.MEMBER_ID
                           AND RECORD_DATE > T1.RECORD_DATE
                       )
      

  5.   

    mantisXF 
     兄弟很热心呀~呼呼中国多些这种人就好了.
      

  6.   

    为什么都加了个MEMBER_ID = T1.MEMBER_ID啊?select * from test11
    where record_date in(
        select max(record_date) from test11 t
        group by member_id ) 结果也对呀
      

  7.   

    select MEMBER_ID, RESULT, RECORD_DATE
      from (select MEMBER_ID,
                   RESULT,
                   RECORD_DATE,
                   row_number() over(partition by MEMBER_ID order by RECORD_DATE desc) rn
              from test1)
     where rn = 1;
      

  8.   


    如果一个id的员工的非最近的一条记录和另一个id员工的最近的一条记录相等,那就查询出错了!哈哈
      

  9.   

    http://fronkx.blog.hexun.com/12407600_d.html
      

  10.   

    SELECT MEMBER_ID,RESULT,MAX(RECORD_DATE)
    FROM TEST
    GROUP BY MEMBER_ID,RESUL
      

  11.   

    select member_id,result,max(record_date)
    from test
    group by member_id,result;