有两张表
表 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时间之前的最新数据
表 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时间之前的最新数据
--好吧,既然你执意要求那就给你写一个,
--不过事先声明:从你给的信息和数据看,这个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;
b表为价格表,a表为点差表,现在我要把b表中所有的价格都显示出来,同时b表中的每条数据都要到a表中找到价格记录时间时时的最新的点差,例如说,现在有条价格的记录时间为10:28:00,对应的点差时间有10:28:10、10:27:30以及10:27:00,要查询得到的是10:27:30
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