Author |
Topic |
mbroad
Starting Member
1 Post |
Posted - 2007-08-16 : 11:37:51
|
Hi-I am a newbie to SQL, so please bear with me. I am trying to run a SQL server statement which will match DB1 against DB2 finding only the NON MATCHES between the two (and writing to a third DB).DB1 has azpprox 600,000 rows in it, DB2 has 160,000 rows.This is code I am using, but it is only finding 1 non match (and writes a NULL row in 3rd DB).See what you think:SELECT DISTINCT FIN.NAME, FIN.ADDRESS, FIN.CITY, FIN.STATE, FIN.ZIP, FIN.ZIP4, FIN.DATEOFBIRTH, FIN.SEX, FIN.SIDinto SOS_41_RERUNFROM SOS_TABLE KEYN left outer join FINAL_FILE FINon FIN.SID = KEYN.SIDWHERE FIN.SID is null;I truly appreciate your help!! Mark Broadwell |
|
ujb
Starting Member
8 Posts |
Posted - 2007-08-17 : 00:41:09
|
Replace all your FIN. to KEYN. otherwise it will just post a NULL row because it is getting its data from the 'right' table of your left joini.e.SELECT DISTINCT FIN.NAME, FIN.ADDRESS, FIN.CITY,FIN.STATE, FIN.ZIP, FIN.ZIP4, FIN.DATEOFBIRTH, FIN.SEX, FIN.SIDto this...SELECT DISTINCT KEYN.NAME, KEYN.ADDRESS, KEYN.CITY,KEYN.STATE, KEYN.ZIP, KEYN.ZIP4, KEYN.DATEOFBIRTH, KEYN.SEX, KEYN.SIDHere is my test data to show proof of concept...DECLARE @SOS_TABLE TABLE ([NAME] INT, ADDRESS INT, CITY INT, SID INT)DECLARE @SOS_41_RERUN TABLE ([NAME] INT, ADDRESS INT, CITY INT, SID INT)DECLARE @FINAL_FILE TABLE ([NAME] INT, ADDRESS INT, CITY INT, SID INT)INSERT @SOS_TABLESELECT 1,2,3,4 UNION ALLSELECT 1,2,3,5 UNION ALLSELECT 1,2,3,6 UNION ALLSELECT 1,2,3,7INSERT @FINAL_FILESELECT 1,2,3,4INSERT INTO @SOS_41_RERUNSELECT DISTINCT KEYN.[NAME], KEYN.ADDRESS, KEYN.CITY, KEYN.SIDFROM @SOS_TABLE KEYN left outer join @FINAL_FILE FINon FIN.SID = KEYN.SIDWHERE FIN.SID is null;SELECT * FROM @SOS_41_RERUN |
 |
|
|
|
|