You should use a full join and use and abuse the "coalesce" function, specially, for any common variable. A solution for your problem would be something like: proc sql; SELECT Coalesce(a.streetnum, b.streetnum) AS streetnum, Coalesce(a.streetname, b.streetname) AS streetname, Coalesce(a.zip, b.zip) AS zip, CASE WHEN NOT( a.streetnum IS NULL AND a.streetname IS NULL AND a.zip IS NULL ) AND NOT( b.streetnum IS NULL AND b.streetname IS NULL AND b.zip IS NULL ) THEN "match" WHEN NOT( a.streetnum IS NULL AND a.streetname IS NULL AND a.zip IS NULL ) AND( b.streetnum IS NULL AND b.streetname IS NULL AND b.zip IS NULL ) THEN "A only" WHEN( a.streetnum IS NULL AND a.streetname IS NULL AND a.zip IS NULL ) AND NOT( b.streetnum IS NULL AND b.streetname IS NULL AND b.zip IS NULL ) THEN "B only" ELSE "match" END AS match FROM address_a AS a FULL JOIN address_b AS b ON ( a.streetnum = b.streetnum AND a.streetname = b.streetname AND a.zip = b.zip ); quit;
... View more