你的SQL少了个FROM 吧
应该为这样吧:
SELECT B.ID, B.KID
  from (SELECT A.ID,
               A.KID,
               ROW_NUMBER() OVER(PARTITION BY A.ID ORDER BY A.BEGINDATE DESC) AS XH
          FROM T_BANK_DKDATA A) B
 WHERE B.XH = 1;
另外帮你写了个SQL:select b.id, a.kid
  from t_bank_dkdata a,
       (select a.id, max(a.begindate) xh from t_bank_dkdata a group by a.id) b
 where b.id = a.id
   and b.xh = a.begindate

解决方案 »

  1.   

    嗯嗯,是少敲打了个FROM !!!!非常感谢你提供的SQL我刚才自己也写了个 看起来好像也可以替换,感觉没啥问题,你看这样是否可以?
    select a.id,a.kid,min(a.begindate) from T_bank_DKDATA a
                        WHERE  A.BEGINDATE <=
                                   TO_DATE('2013-12-02', 'YYYY-MM-DD') group by a.id,a.kid