SAS PROC SQL通过比较日期来连接两个表

时间:2015-04-04 11:03:19

标签: 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来加入表A和表B.如果date2< date1然后加入。 预期结果应如下(表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

如何删除标有(*)的?有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:0)

根据您的预期结果,您似乎只需要替换

TABLE_A.DATE1 < TABLE_B.DATE2;

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