我现在有如下需求:
A表
员工 日期
a 2001/5/1
a 2007/4/4
a 2009/12/12
a 2011/2/11
B表
员工 日期 指示
a 2001/5/1 N
a 2008/8/1 Y
a 2010/3/2 N
这只是针对于一个员工,真实数据有很多员工,
需求是:我要将A表中的每条数据,根据其日期在B表中查找,如果有对应的日期,就取其对应的指示,如果没有,就要找比它大的日期中最小的那条记录所对应的指示,
比如A表中的2007/4/4这条记录,在B表中没有2007/4/4这个日期,就必须找B表中比这个日期大的,也就是2008/8/1和2010/3/2, 这两个中选最小的,也就是2008/8/1号对应的指示,也就是Y,
SQL如何写,
弄了很久,还是不行,
------解决方案--------------------------------------------------------
- SQL code
select X.员工 ,X.日期 ,X.B_日期 ,B.指示from B,( select A.员工 ,A.日期 ,min(B.日期) as B_日期 from A, B where A.员工 = B.员工 and A.日期 <= B.日期 group by A.员工, A.日期 ) Xwhere B.员工 = X.员工 and B.日期 = X.B_日期