2015-04-04 101 views
0

好日子大家加入兩個表。我試圖通過比較日期來加入兩個數據集。 假設我有兩個數據集這樣:SAS PROC SQL通過比較日期

---Table A---  ---Table B--- 
ID Date1   ID Date2 
01 29/1/2010  01 28/1/2011 
01 29/1/2011  01 28/1/2012 
01 29/1/2012  01 28/1/2013 
01 29/1/2013  01 28/1/2014 
01 29/1/2014  01 28/1/2015 
01 29/1/2015  01 28/1/2016 

我想通過比較日期1和日期2。如果date2的< DATE1再加入加入表A和B表。 預期的結果應該是這樣的(表3):

---Table C--- 
ID Date1  Date2 
01 29/1/2010 . 
01 29/1/2011 28/1/2011 
01 29/1/2012 28/1/2012 
01 29/1/2013 28/1/2013 
01 29/1/2014 28/1/2014 
01 29/1/2015 28/1/2015 

但是,當我嘗試使用此代碼

PROC SQL; 
    CREATE TABLE TABLE_C AS 
    SELECT TABLE_A.*, TABLE_B.DATE2 
    FROM TABLE_A LEFT JOIN TABLE_B 
    ON 
     TABLE_A.ID = TABLE_B.ID AND 
     TABLE_A.DATE1 < TABLE_B.DATE2; 

我結束了這樣的結果:

---Table C--- 
ID Date1  Date2 
01 29/1/2010 . 
01 29/1/2011 28/1/2011 
01 29/1/2012 28/1/2011 * 
01 29/1/2013 28/1/2011 * 
01 29/1/2014 28/1/2011 * 
01 29/1/2015 28/1/2011 * 
01 29/1/2012 28/1/2012 
01 29/1/2013 28/1/2012 * 
01 29/1/2014 28/1/2012 * 
01 29/1/2015 28/1/2012 * 
01 29/1/2013 28/1/2013 
01 29/1/2014 28/1/2013 * 
01 29/1/2015 28/1/2013 * 
01 29/1/2014 28/1/2014 
01 29/1/2015 28/1/2014 * 
01 29/1/2015 28/1/2015 

我怎樣才能刪除標有(*)的標籤?任何人都可以幫忙嗎?謝謝!

回答

0

根據您預期的結果,它看起來像你只需要更換

TABLE_A.DATE1 < TABLE_B.DATE2; 

TABLE_A.DATE1 > TABLE_B.DATE2 and /* date2 < date1 */ 
YEAR(TABLE_A.DATE1) = YEAR(TABLE_B.DATE2);