大体的描述如下:
查询tb2中日期离tb1中最近的记录,如果tb1的这条记录查询出来,那么
对应tb2中这个日期下个日期在tb1中没有最近的记录,那么不显示tb1的对应日期
知道tb1中日期再次出现里tb1中最近的记录。还有个条件就是tb2中相邻日期之间的日期
没有在tb1中出现具体事例如下:
tb1a1 b1 c1
0001 2012-10-1 a
0001 2012-10-2 b
0001 2012-10-9 ctb2
a b
0001 2012-10-1
0001 2012-10-2
0001 2012-10-3
0001 2012-10-4
0001 2012-10-10
0001 2012-10-12查询结果如下:
a b b1 c1
0001 2012-10-1 2012-10-1 c
0001 2012-10-2 2012-10-2 b
0001 2012-10-3 null
0001 2012-10-4 null
0001 2012-10-10 2012-10-9 c
0001 2012-10-12 null
0002 2012-10-12 null
0003 2012-10-12 null
查询tb2中日期离tb1中最近的记录,如果tb1的这条记录查询出来,那么
对应tb2中这个日期下个日期在tb1中没有最近的记录,那么不显示tb1的对应日期
知道tb1中日期再次出现里tb1中最近的记录。还有个条件就是tb2中相邻日期之间的日期
没有在tb1中出现具体事例如下:
tb1a1 b1 c1
0001 2012-10-1 a
0001 2012-10-2 b
0001 2012-10-9 ctb2
a b
0001 2012-10-1
0001 2012-10-2
0001 2012-10-3
0001 2012-10-4
0001 2012-10-10
0001 2012-10-12查询结果如下:
a b b1 c1
0001 2012-10-1 2012-10-1 c
0001 2012-10-2 2012-10-2 b
0001 2012-10-3 null
0001 2012-10-4 null
0001 2012-10-10 2012-10-9 c
0001 2012-10-12 null
0002 2012-10-12 null
0003 2012-10-12 null
0003 2012-10-12 null 这两条怎么来的
tb2
a b
0001 2012-10-1
0001 2012-10-2
0001 2012-10-3
0001 2012-10-4
0001 2012-10-10
0001 2012-10-12
0002 2012-10-12
0003 2012-10-12
查询tb2中日期离tb1中最近的记录,如果tb1的这条记录查询出来,那么
对应tb2中这个日期下个日期在tb1中没有最近的记录,那么不显示tb1的对应日期
直到tb2中日期再次出现离tb1中最近的记录。还有个条件就是tb2中相邻日期之间的日期
没有在tb1中出现具体事例如下:
tb1a1 b1 c1
0001 2012-10-1 a
0001 2012-10-2 b
0001 2012-10-9 ctb2
a b
0001 2012-10-1
0001 2012-10-2
0001 2012-10-3
0001 2012-10-4
0001 2012-10-10
0001 2012-10-12
0002 2012-10-12
0003 2012-10-12
查询结果如下:
a b b1 c1
0001 2012-10-1 2012-10-1 c
0001 2012-10-2 2012-10-2 b
0001 2012-10-3 null
0001 2012-10-4 null
0001 2012-10-10 2012-10-9 c
0001 2012-10-12 null
0002 2012-10-12 null
0003 2012-10-12 null .
from tb2 a left join tb1 b
on a.a= b.a1
and not exists (
select 1 from tb1
where a1= b.a1
and b1 <= a.b
and b1 > b.b1
)
and not exists
select 1 from tb2
where a= a.a
and b < a.b
and b >= b.b1
)
相邻日期
怎么理解? 相差多少天称为最近? 相邻多少天称为相邻?
tb1和tb2如何关联? 是否通过 tb1.a1 = tb2.a ?