有这样一些数据:
khbh  客户编号
jkje  交款金额
xgrq  修改日期(交款日期)khbh     jkje     xgrq
0001     200.23   2011-01-01 13:12:14
0001     300      2011-01-11 14:12:14
0001     450      2011-01-24 13:12:14
0002     200.23   2011-01-01 13:12:14
0002     300.23   2011-01-14 13:12:14
0003     100.23   2011-01-03 13:12:14
0003     230.00   2011-01-05 15:19:00想查询每个客户,最新的交款日期的交款金额。

解决方案 »

  1.   

    select khbh,
           oftime,
           (select t2.jkje 
              from mw_app.mwt_offend_info t2
             where t2.khbh = khbh
               and t2.xgrq = oftime)
      from (select t.khbh, max(t.xgrq) as oftime
              from mw_app.mwt_offend_info t
             group by t.khbh)
    要么倒序排列,取第一个,要么直接取最大值
    一般可以比较的 我都取最大值 order用起来比较乱
      

  2.   

    select khbh, jkje, xgrq
      from (select row_number() over(partition by khbh order by xgrq desc) as rn,
                   khbh,
                   jkje,
                   xgrq
              from test)
     where rn = 1
      

  3.   

    由于是查最近被更改的数据,查回滚段就可以
        select khbh,jkje,xgrq,versions_starttime,versions_endtime
    from table version between timestamp minvalue and maxvalue where
    versions_starttime is not null order by version_starttime desc;   versions_starttime是数据被修改的起始时间,versions_endtime是数据被修改后新数据的有效时间,也就是versions_starttime和versions_endtime时间段内,这条数据再没被修改过,如果versions_endtime为空,就说明这天记录从versions_starttime时间起再没被修改过。
      

  4.   

    比较支持3楼的分析函数,2楼的对大表group by 效果不好