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

Я пытаюсь присоединиться к таблице A и таблице B, сравнивая дату 1 и дату 2. Если 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

Как я могу удалить те, которые помечены (*)? Кто-нибудь может помочь? Спасибо!


person saspower    schedule 04.04.2015    source источник


Ответы (1)


Судя по вашему ожидаемому результату, вам нужно будет только заменить

TABLE_A.DATE1 < TABLE_B.DATE2;

с участием

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