HI PG- I used your syntax and I am not getting the results I am expecting. A no match resulted when a match should have been produced. Here is the code: PROC SQL; CREATE TABLE NEW AS SELECT E.*, P.IDKEY, P.CERTKEY, P.BIRDATE, P.GNDRCODEKEY, P.SAS_START_DATE, P.SAS_END_DATE, FROM ENR AS E LEFT JOIN PGM AS P ON E.IDKEY=P.IDKEY and p.SAS_START_DATE LE e.SAS_WITHDRLDATE_DATE and p.SAS_END_DATE GE e.SAS_ENROLLDATE_DATE group by e.SAS_ENROLLDATE_DATE, e.SAS_WITHDRLDATE_DATE having p.SAS_START_DATE=max(p.SAS_START_DATE) or p.SAS_START_DATE is missing; select * from new; quit; However, when I manually entered the records from the two table(expecting a match) into the code below- it resulted in a match. data enr; input idkey enr_start enr_end; datalines; 50 19946 20243 ; RUN; data pro; input idkey pgm_start pgm_end ; datalines; 50 19946 9999999 50 19946 9999999 50 20237 9999999 ; PROC SQL; CREATE TABLE NEW AS SELECT e.*, p.pgm_start, pgm_end FROM ENR AS E LEFT JOIN PRO AS P ON E.IDKEY=P.IDKEY and p.pgm_start <=e.enr_end and p.pgm_end >= e.enr_start group by e.enr_start, e.enr_end having p.pgm_start=max(p.pgm_start) or p.pgm_start is missing; select * from new; quit; Do you know what could be wrong?
Also- the join didnt return all records from my original table. Dataset 1 contains 114,000 records (which is the SOURCE) Dataset 2 contains 354,000 and join only netted 33,000 records?
... View more