2017-03-27 48 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