有两张表
表 a 数据如下:
bankid   ccy   point  date       time
1        aa    1      20120821   105300
1        bb    1      20120821   105300
1        aa    2      20120821   105000
1        bb    2      20120821   105000表 b 数据如下:
bankid   ccy   rate   date       time
1        aa    1      20120821   105400
1        bb    1      20120821   105400
1        aa    2      20120821   105100
1        bb    2      20120821   105100查询时能得到这样的数据:
bankid   ccy   rate   date       time    point  date       time  
1        aa    1      20120821   105400  1      20120821   105300
1        bb    1      20120821   105400  1      20120821   105300
1        aa    2      20120821   105100  2      20120821   105000
1        bb    2      20120821   105100  2      20120821   105000即表a中的point等数据为表b中的date和time时间之前的最新数据

解决方案 »

  1.   


    --好吧,既然你执意要求那就给你写一个,
    --不过事先声明:从你给的信息和数据看,这个sql肯定能办到,但是不一定适用你的真实情况,因为你的需求太含糊
    select b.bankid,b.ccy,b.point,b.date,b.time,
           a.bankid,a.ccy,a.point,a.date,a.time   
      from a,b
     where a.bankid = b.bankid
       and a.ccy = b.ccy
       and a.point = b.point
       and b.date||b.time >= a.date||a.time;         
      

  2.   


    b表为价格表,a表为点差表,现在我要把b表中所有的价格都显示出来,同时b表中的每条数据都要到a表中找到价格记录时间时时的最新的点差,例如说,现在有条价格的记录时间为10:28:00,对应的点差时间有10:28:10、10:27:30以及10:27:00,要查询得到的是10:27:30
      

  3.   

     select b.bankid,b.ccy,b.point,b.date,b.time,
            a.bankid,a.ccy,a.point,max(a.date||a.time)
       from a,b
      where a.bankid = b.bankid
        and a.ccy = b.ccy
        and a.point = b.point
        and b.date||b.time >= a.date||a.time
      group by b.bankid,b.ccy,b.point,b.date,b.time,
               a.bankid,a.ccy,a.point