是这样的 首先我希望这个查询 是一条语句解决 A表中 有4个字段 分别是 NAME,PHONE,JIFEN,DATE有50行数据 分别是4个人的每个人肯能会有很多行数据 但是唯一不重复的是JIFEN 我现在希望查询到 每个人不重复的数据 也就是说应该是四条数据 并且 JIFEN 要取每个人的最后一条 比如:
name   phone  jifen  dateA       123     110   2012-02-29
A       123     100   2012-02-29
A       123     90   2012-02-29
A       123     120   2012-02-29
B       123     110   2012-02-29
B       123     110   2012-02-29
B       123     160   2012-02-29
C       123     110   2012-02-29
...
D       123     110   2012-02-29
...查询完之后的结果是 name    phone    jifen   date
A        123      120     2012-02-29
B        123      160     2012-02-29
C...
D...不知道这样说大家是否能够看懂,日期这列没有小时分钟 只精确到日期

解决方案 »

  1.   

    select name, phone,max(jifen),date from 表A group by name,phone,date
    如果出现两行完全一样的数据那就不合理了(因为日期只精确到日),出现冗余了,如果需要在进行重复过滤查询。
      

  2.   

    这个不难,用Row_number就可以了。
    SELECT   NAME,
             PHONE,
             JIFEN,
             DATE
      FROM   (SELECT   NAME,
                       PHONE,
                       JIFEN,
                       DATE,
                       ROW_NUMBER () OVER (PARTITION BY NAME ORDER BY jifen DESC)
                          rn
                FROM   A)
     WHERE   rn = 1
      

  3.   

    这样的话可以用日期和积分序号倒序排就能得到你要的
    SELECT   NAME,
             PHONE,
             JIFEN,
             DATE
      FROM   (SELECT   NAME,
                       PHONE,
                       JIFEN,
                       DATE,
                       ROW_NUMBER () OVER (PARTITION BY NAME ORDER BY DATE desc,seq(序号) DESC)
                          rn
                FROM   A)
     WHERE   rn = 1