2017-03-27 50 views
1

我有在YYYY-MM-DD和地区(仅西部,东部可能)如何从另一个表

effect_date region 
2013-01-01 west 
2013-01-02 west 
2013-01-10 west 
2015-01-01 west 
2015-01-02 west 
2015-01-10 west 
数据

表A两个表获取基于价值一个表中的最大值在YYYY-MM-DD

表B(从2015年1月1日开始在无日期间隙的currentdate)

run_date 
01-01-2015 west 
01-02-2015 west 
. 
. 
. 
03-27-2015 west 

现在我想最大表A的小于表B.示例输出的每一行应该是

2013-01-10 2015-01-01 west 
2015-01-01 2015-01-02 west 
. 
. 
2015-01-02 2015-01-10 west 
2015-01-10 2015-01-11 west 

我不知道如何遍历为表B中的每一行,我的查询是

select max(effect_date), region from TableA b join TableA a on a.region = b.region where effect_date < run_date; --returning only 1 row 

任何帮助,将不胜感激。由于

+0

这个问题领域被称为GroupWise的最大 - 互联网有大量的文献就可以了。 – user1327961

+0

谢谢..肯定会经历 – sandeep007

回答

0

如果第二个表没有差距,那么你可以使用一个连接和累计最高:

select a.*, 
     max(a.effect_date) over (partition by b.region 
           order by b.run_date 
           ) as effect_date 
from b left join 
    a 
    on b.run_date = a.effect_date and b.region = a.region; 
+0

感谢Linoff的回答 – sandeep007