Sounds like you need a FULL OUTER JOIN:DECLARE @Table1 TABLE( ParentID int, ObjectID int)DECLARE @Table2 TABLE( PackageID varchar(10), ObjectID int)INSERT INTO @Table1SELECT 12345, 20009 UNION ALLSELECT 12345, 20010 UNION ALLSELECT 12345, 20011 UNION ALLSELECT 12345, 35454 UNION ALLSELECT 22222, 34343 UNION ALLSELECT 22222, 34355 UNION ALLSELECT 33333, 98766 UNION ALLSELECT 33333, 98767INSERT INTO @Table2SELECT 'TEST', 20009 UNION ALLSELECT 'TEST', 20010 UNION ALLSELECT 'TEST', 20011 UNION ALLSELECT 'TEST', 35454 UNION ALLSELECT 'TEST100', 34343 UNION ALLSELECT 'TEST100', 34355 UNION ALLSELECT 'TEST100', 44444 UNION ALLSELECT 'TEST200', 98766SELECT [ObjectID] = COALESCE(T1.ObjectID, T2.ObjectID), [1_ParentID] = T1.ParentID, [2_PackageID] = T2.PackageID, [Message] = CASE WHEN T1.ObjectID IS NULL THEN 'Record does not exist in Table A' WHEN T2.ObjectID IS NULL THEN 'Record does not exist in Table B' ELSE 'Matched' ENDFROM @Table1 AS T1 FULL OUTER JOIN @Table2 AS T2 ON T1.ObjectID = T2.ObjectID--WHERE T1.ObjectID IS NULL OR T2.ObjectID IS NULL
Kristen