| Author |
Topic |
|
MontyMagic
Starting Member
12 Posts |
Posted - 2011-09-20 : 03:43:16
|
| Hi,Thank you for the help, amazinly the last process was reduced from 8.5 hours to 3.5 minutes by ditching the cursor. As mentioned in my previous post here is the 2nd extremely slow cursor. I am currently trying to apply my new found logic to see if I can speed it up, but I am also posting here to see what sugesstions you have.Thank you in advance for your thoughts, help, suggestions.MontyStored Proc Code below:/*** UNIVERSE MATCHING ***/DECLARE @ACCOUNTID varchar (20)DECLARE @CONTACTID varchar(20)DECLARE @BRANCHID varchar (20)DECLARE @TYPE varchar (12)DECLARE @ACCOUNT01 varchar (128)DECLARE @ACCOUNT02 varchar (128)DECLARE @ACCOUNT03 varchar (128)DECLARE @ACCOUNT04 varchar (128)DECLARE @ACCOUNT05 varchar (64)DECLARE @ACCOUNT06 varchar (64)DECLARE @ACCOUNT07 varchar (128)DECLARE @ACCOUNT08 varchar (64)DECLARE @PREFIX01 varchar (12)DECLARE @PREFIX02 varchar (12)DECLARE @PREFIX03 varchar (12)DECLARE @PREFIX04 varchar (12)DECLARE @PREFIX05 varchar (50)DECLARE @FNAME01 varchar (64)DECLARE @FNAME02 varchar (64)DECLARE @FNAME03 varchar (64)DECLARE @FNAME04 varchar (64)DECLARE @FNAME05 varchar (64)DECLARE @FNAME06 varchar (8)DECLARE @SNAME01 varchar (64)DECLARE @SNAME02 varchar (64)DECLARE @SNAME03 varchar (64)DECLARE @SNAME04 varchar (64)DECLARE @SNAME05 varchar (64)DECLARE @WORKPHONE01 varchar (16)DECLARE @WORKPHONE02 varchar (16)DECLARE @WORKPHONE03 varchar (16)DECLARE @WORKPHONE04 varchar (16)DECLARE @WORKPHONE05 varchar (16)DECLARE @FAX01 varchar (16)DECLARE @FAX02 varchar (16)DECLARE @FAX03 varchar (16)DECLARE @FAX04 varchar (16)DECLARE @FAX05 varchar (16)DECLARE @PC01 varchar (12)DECLARE @PC02 varchar (12)DECLARE @PC03 varchar (12)DECLARE @PC04 varchar (12)DECLARE @PC05 varchar (12)DECLARE @ADD1NUM varchar (32)DECLARE @ADD2NUM varchar (32)DECLARE @ADD1UNIT varchar (32)DECLARE @ADD2UNIT varchar (32)DECLARE @ADD1_01 varchar (128)DECLARE @ADD1_02 varchar (128)DECLARE @ADD1_03 varchar (128)DECLARE @ADD2_01 varchar (128)DECLARE @ADD2_02 varchar (128)DECLARE @ADD2_03 varchar (128)DECLARE @CITY01 varchar (64)DECLARE @CITY02 varchar (64)DECLARE @CITY03 varchar (64)DECLARE @GENDER varchar(1)DECLARE c1 CURSOR READ_ONLY FORSELECT CONSOURCE1.UNIACCREF as ACCOUNTID, CONSOURCE1.RECORDID as SOURCEID,CONSOURCE1.SOURCECONID as SOURCEBRANCHID, 'Prospect' as SOURCERATING,ACCOUNT01,ACCOUNT02,ACCOUNT03,ACCOUNT04,ACCOUNT05,ACCOUNT06,ACCOUNT07,ACCOUNT08,PREFIX01,PREFIX02,PREFIX03,PREFIX04,PREFIX05,FNAME01,FNAME02,FNAME03,FNAME04,FNAME05,FNAME06,SNAME01,SNAME02,SNAME03,SNAME04,SNAME05,WORKPHONE01,WORKPHONE02,WORKPHONE03,WORKPHONE04,WORKPHONE05,FAX01,FAX02,FAX03,FAX04,FAX05,ADD1NUM, ADD2NUM,ADD1UNIT, ADD2UNIT,ADD1_01,ADD1_02,ADD1_03,ADD2_01,ADD2_02,ADD2_03,CITY01,CITY02,CITY03,PC01,PC02,PC03,C_MATCH1.GENDERfrom PROCESSING.dbo.con CONSOURCE1inner join PROCESSING.dbo.C_MATCH C_MATCH1 on CONSOURCE1.recordid = C_MATCH1.CONTACTIDleft join PROCESSING.dbo.ADD_MATCH ADD_MATCH1 on CONSOURCE1.RECORDID = ADD_MATCH1.BRANCHID and 'CONTACT' = ADD_MATCH1.TYPEwhere CONSOURCE1.UNIACCREF is not null and CONSOURCE1.UNIACCREF <> ''OPEN c1FETCH NEXT FROM c1 into @ACCOUNTID, @CONTACTID, @BRANCHID, @TYPE,@ACCOUNT01, @ACCOUNT02, @ACCOUNT03, @ACCOUNT04, @ACCOUNT05, @ACCOUNT06, @ACCOUNT07, @ACCOUNT08, @PREFIX01, @PREFIX02, @PREFIX03, @PREFIX04, @PREFIX05,@FNAME01, @FNAME02, @FNAME03, @FNAME04, @FNAME05, @FNAME06,@SNAME01, @SNAME02, @SNAME03, @SNAME04, @SNAME05,@WORKPHONE01,@WORKPHONE02,@WORKPHONE03,@WORKPHONE04,@WORKPHONE05,@FAX01,@FAX02,@FAX03,@FAX04,@FAX05,@ADD1NUM, @ADD2NUM,@ADD1UNIT, @ADD2UNIT,@ADD1_01,@ADD1_02,@ADD1_03,@ADD2_01,@ADD2_02,@ADD2_03,@CITY01,@CITY02,@CITY03,@PC01,@PC02,@PC03,@GENDERWHILE @@FETCH_STATUS = 0BEGIN/*** PUT CODE HERE TO MATCH UP ***/insert into PROCESSING.dbo.C_SCORE (SOURCEID,SOURCEBRANCHID,SOURCERATING,TARGETID,TARGETACCID,SCOREACCOUNT01,SCOREACCOUNT02,SCOREACCOUNT03,SCOREACCOUNT04,SCOREACCOUNT05,SCOREACCOUNT06,SCOREACCOUNT07,SCOREACCOUNT08,SCOREPREFIX01,SCOREPREFIX02,SCOREPREFIX03,SCOREPREFIX04,SCOREPREFIX05,SCOREFNAME01,SCOREFNAME02,SCOREFNAME03,SCOREFNAME04,SCOREFNAME05,SCOREFNAME06,SCORESNAME01,SCORESNAME02,SCORESNAME03,SCORESNAME04,SCORESNAME05,SCOREWORKPHONE01,SCOREWORKPHONE02,SCOREWORKPHONE03,SCOREWORKPHONE04,SCOREWORKPHONE05,SCOREFAX01,SCOREFAX02,SCOREFAX03,SCOREFAX04,SCOREFAX05,SCOREADDNUM1, SCOREADDNUM2, SCOREADDNUMX,SCOREADD1UNIT, SCOREADD2UNIT, SCOREADDXUNIT,SCOREADD101,SCOREADD102,SCOREADD103,SCOREADD201,SCOREADD202,SCOREADD203,SCOREADDX01,SCOREADDX02,SCOREADDX03,SCORECITY01,SCORECITY02,SCORECITY03,SCOREPC01,SCOREPC02,SCOREPC03,SCOREGENDER01)select @CONTACTID,@BRANCHID,@TYPE,CONTACT2.CONTACTREF,CONTACT2.COMPANYREF,SCOREACC01 = case IsNull(@ACCOUNT01,'|||') when IsNull(C_MATCH2.ACCOUNT01,'~~~') then 1 else 0 end,SCOREACC02 = case IsNull(@ACCOUNT02,'|||') when IsNull(C_MATCH2.ACCOUNT02,'~~~') then 1 else 0 end,SCOREACC03 = case IsNull(@ACCOUNT03,'|||') when IsNull(C_MATCH2.ACCOUNT03,'~~~') then 1 else 0 end,SCOREACC04 = case IsNull(@ACCOUNT04,'|||') when IsNull(C_MATCH2.ACCOUNT04,'~~~') then 1 else 0 end,SCOREACC05 = case IsNull(@ACCOUNT05,'|||') when IsNull(C_MATCH2.ACCOUNT05,'~~~') then 1 else 0 end,SCOREACC06 = case IsNull(@ACCOUNT06,'|||') when IsNull(C_MATCH2.ACCOUNT06,'~~~') then 1 else 0 end,SCOREACC07 = case IsNull(@ACCOUNT07,'|||') when IsNull(C_MATCH2.ACCOUNT07,'~~~') then 1 else 0 end,SCOREACC08 = case IsNull(@ACCOUNT08,'|||') when IsNull(C_MATCH2.ACCOUNT08,'~~~') then 1 else 0 end,SCOREPREFIX01 = case IsNull(@PREFIX01,'|||') when IsNull(C_MATCH2.PREFIX01,'~~~') then 2 else case IsNull(@PREFIX01,'') when '' then 1 else case IsNull(C_MATCH2.PREFIX01,'') when '' then 1 else 0 end end end,SCOREPREFIX02 = case IsNull(@PREFIX02,'|||') when IsNull(C_MATCH2.PREFIX02,'~~~') then 2 else case IsNull(@PREFIX02,'') when '' then 1 else case IsNull(C_MATCH2.PREFIX02,'') when '' then 1 else 0 end end end,SCOREPREFIX03 = case IsNull(@PREFIX03,'|||') when IsNull(C_MATCH2.PREFIX03,'~~~') then 2 else case IsNull(@PREFIX03,'') when '' then 1 else case IsNull(C_MATCH2.PREFIX03,'') when '' then 1 else 0 end end end,SCOREPREFIX04 = case IsNull(@PREFIX04,'|||') when IsNull(C_MATCH2.PREFIX04,'~~~') then 2 else case IsNull(@PREFIX04,'') when '' then 1 else case IsNull(C_MATCH2.PREFIX04,'') when '' then 1 else 0 end end end,SCOREPREFIX05 = case IsNull(@PREFIX05,'|||') when IsNull(C_MATCH2.PREFIX05,'~~~') then 2 else case IsNull(@PREFIX05,'') when '' then 1 else case IsNull(C_MATCH2.PREFIX05,'') when '' then 1 else 0 end end end,SCOREFNAME01 = case IsNull(@FNAME01,'|||') when IsNull(C_MATCH2.FNAME01,'~~~') then 2 else case IsNull(@FNAME01,'') when '' then 1 else case IsNull(C_MATCH2.FNAME01,'') when '' then 1 else 0 end end end,SCOREFNAME02 = case IsNull(@FNAME02,'|||') when IsNull(C_MATCH2.FNAME02,'~~~') then 2 else case IsNull(@FNAME02,'') when '' then 1 else case IsNull(C_MATCH2.FNAME02,'') when '' then 1 else 0 end end end,SCOREFNAME03 = case IsNull(@FNAME03,'|||') when IsNull(C_MATCH2.FNAME03,'~~~') then 2 else case IsNull(@FNAME03,'') when '' then 1 else case IsNull(C_MATCH2.FNAME03,'') when '' then 1 else 0 end end end,SCOREFNAME04 = case IsNull(@FNAME04,'|||') when IsNull(C_MATCH2.FNAME04,'~~~') then 2 else case IsNull(@FNAME04,'') when '' then 1 else case IsNull(C_MATCH2.FNAME04,'') when '' then 1 else 0 end end end,SCOREFNAME05 = case IsNull(@FNAME05,'|||') when IsNull(C_MATCH2.FNAME05,'~~~') then 2 else case IsNull(@FNAME05,'') when '' then 1 else case IsNull(C_MATCH2.FNAME05,'') when '' then 1 else 0 end end end,SCOREFNAME06 = case IsNull(@FNAME06,'|||') when IsNull(C_MATCH2.FNAME06,'~~~') then 2 else case IsNull(@FNAME06,'') when '' then 1 else case IsNull(C_MATCH2.FNAME06,'') when '' then 1 else 0 end end end,SCORESNAME01 = case IsNull(@SNAME01,'|||') when IsNull(C_MATCH2.SNAME01,'~~~') then 2 else case IsNull(@SNAME01,'') when '' then 1 else case IsNull(C_MATCH2.SNAME01,'') when '' then 1 else 0 end end end,SCORESNAME02 = case IsNull(@SNAME02,'|||') when IsNull(C_MATCH2.SNAME02,'~~~') then 2 else case IsNull(@SNAME02,'') when '' then 1 else case IsNull(C_MATCH2.SNAME02,'') when '' then 1 else 0 end end end,SCORESNAME03 = case IsNull(@SNAME03,'|||') when IsNull(C_MATCH2.SNAME03,'~~~') then 2 else case IsNull(@SNAME03,'') when '' then 1 else case IsNull(C_MATCH2.SNAME03,'') when '' then 1 else 0 end end end,SCORESNAME04 = case IsNull(@SNAME04,'|||') when IsNull(C_MATCH2.SNAME04,'~~~') then 2 else case IsNull(@SNAME04,'') when '' then 1 else case IsNull(C_MATCH2.SNAME04,'') when '' then 1 else 0 end end end,SCORESNAME05 = case IsNull(@SNAME05,'|||') when IsNull(C_MATCH2.SNAME05,'~~~') then 2 else case IsNull(@SNAME05,'') when '' then 1 else case IsNull(C_MATCH2.SNAME05,'') when '' then 1 else 0 end end end,SCOREWORKPHONE01 = case IsNull(@WORKPHONE01,'|||') when IsNull(C_MATCH2.WORKPHONE01,'~~~') then 1 else 0 end,SCOREWORKPHONE02 = case IsNull(@WORKPHONE02,'|||') when IsNull(C_MATCH2.WORKPHONE02,'~~~') then 1 else 0 end,SCOREWORKPHONE03 = case IsNull(@WORKPHONE03,'|||') when IsNull(C_MATCH2.WORKPHONE03,'~~~') then 1 else 0 end,SCOREWORKPHONE04 = case IsNull(@WORKPHONE04,'|||') when IsNull(C_MATCH2.WORKPHONE04,'~~~') then 1 else 0 end,SCOREWORKPHONE05 = case IsNull(@WORKPHONE05,'|||') when IsNull(C_MATCH2.WORKPHONE05,'~~~') then 1 else 0 end,SCOREFAX01 = case IsNull(@FAX01,'|||') when IsNull(C_MATCH2.FAX01,'~~~') then 1 else 0 end,SCOREFAX02 = case IsNull(@FAX02,'|||') when IsNull(C_MATCH2.FAX02,'~~~') then 1 else 0 end,SCOREFAX03 = case IsNull(@FAX03,'|||') when IsNull(C_MATCH2.FAX03,'~~~') then 1 else 0 end,SCOREFAX04 = case IsNull(@FAX04,'|||') when IsNull(C_MATCH2.FAX04,'~~~') then 1 else 0 end,SCOREFAX05 = case IsNull(@FAX05,'|||') when IsNull(C_MATCH2.FAX05,'~~~') then 1 else 0 end,SCOREADDNUM1 = case IsNull(@ADD1NUM,'|||') when IsNull(ADD_MATCH2.ADD1NUM,'~~~') then 1 else 0 end,SCOREADDNUM2 = case IsNull(@ADD2NUM,'|||') when IsNull(ADD_MATCH2.ADD2NUM,'~~~') then 1 else 0 end,SCOREADDNUMX = case IsNull(@ADD1NUM,'|||') when IsNull(ADD_MATCH2.ADD2NUM,'~~~') then 1 else 0 end,SCOREADD1UNIT = case IsNull(@ADD1UNIT,'|||') when IsNull(ADD_MATCH2.ADD1UNIT,'~~~') then 1 else 0 end,SCOREADD2UNIT = case IsNull(@ADD2UNIT,'|||') when IsNull(ADD_MATCH2.ADD2UNIT,'~~~') then 1 else 0 end,SCOREADDXUNIT = case IsNull(@ADD1UNIT,'|||') when IsNull(ADD_MATCH2.ADD2UNIT,'~~~') then 1 else 0 end,SCOREADD101 = case IsNull(@ADD1_01,'|||') when IsNull(ADD_MATCH2.ADD1_01,'~~~') then 1 else 0 end,SCOREADD102 = case IsNull(@ADD1_02,'|||') when IsNull(ADD_MATCH2.ADD1_02,'~~~') then 1 else 0 end,SCOREADD103 = case IsNull(@ADD1_03,'|||') when IsNull(ADD_MATCH2.ADD1_03,'~~~') then 1 else 0 end,SCOREADD201 = case IsNull(@ADD2_01,'|||') when IsNull(ADD_MATCH2.ADD2_01,'~~~') then 1 else 0 end,SCOREADD202 = case IsNull(@ADD2_02,'|||') when IsNull(ADD_MATCH2.ADD2_02,'~~~') then 1 else 0 end,SCOREADD203 = case IsNull(@ADD2_03,'|||') when IsNull(ADD_MATCH2.ADD2_03,'~~~') then 1 else 0 end,SCOREADDX01 = case IsNull(@ADD1_01,'|||') when IsNull(ADD_MATCH2.ADD2_01,'~~~') then 1 else 0 end,SCOREADDX02 = case IsNull(@ADD1_02,'|||') when IsNull(ADD_MATCH2.ADD2_02,'~~~') then 1 else 0 end,SCOREADDX03 = case IsNull(@ADD1_03,'|||') when IsNull(ADD_MATCH2.ADD2_03,'~~~') then 1 else 0 end,SCORECITY01 = case IsNull(@CITY01,'|||') when IsNull(ADD_MATCH2.CITY01,'~~~') then 1 else 0 end,SCORECITY02 = case IsNull(@CITY02,'|||') when IsNull(ADD_MATCH2.CITY02,'~~~') then 1 else 0 end,SCORECITY03 = case IsNull(@CITY03,'|||') when IsNull(ADD_MATCH2.CITY03,'~~~') then 1 else 0 end,SCOREPC01 = case IsNull(@PC01,'|||') when IsNull(ADD_MATCH2.PC01,'~~~') then 1 else 0 end,SCOREPC02 = case IsNull(@PC02,'|||') when IsNull(ADD_MATCH2.PC02,'~~~') then 1 else 0 end,SCOREPC03 = case IsNull(@PC03,'|||') when IsNull(ADD_MATCH2.PC03,'~~~') then 1 else 0 end,GENDER01 = case IsNull(@GENDER,'|||') when IsNull(C_MATCH2.GENDER,'~~~') then 1 else 0 endfrom UNIVERSE.dbo.contacts CONTACT2inner join UNIVERSE.dbo.C_MATCH C_MATCH2 on CONTACT2.contactref = C_MATCH2.CONTACTIDinner join UNIVERSE.dbo.ADD_MATCH ADD_MATCH2 on CONTACT2.contactref = ADD_MATCH2.ADDRESSIDwhere/*** THERE HAS TO BE AT LEAST AN ACCOUNT NAME MATCH MATCH ***/(((@ACCOUNTID = CONTACT2.COMPANYREF)) and/*** AND THERE HAS TO BE AT LEAST A FIRST OR LAST NAME MATCH ***/((@FNAME01 <> '' and @FNAME01 is not null and @FNAME01 = C_MATCH2.FNAME01) or(@FNAME02 <> '' and @FNAME02 is not null and @FNAME02 = C_MATCH2.FNAME02) or(@FNAME03 <> '' and @FNAME03 is not null and @FNAME03 = C_MATCH2.FNAME03) or(@FNAME04 <> '' and @FNAME04 is not null and @FNAME04 = C_MATCH2.FNAME04) or(@FNAME05 <> '' and @FNAME05 is not null and @FNAME05 = C_MATCH2.FNAME05) or(@FNAME06 <> '' and @FNAME06 is not null and @FNAME06 = C_MATCH2.FNAME06) or(@SNAME01 <> '' and @SNAME01 is not null and @SNAME01 = C_MATCH2.SNAME01) or(@SNAME02 <> '' and @SNAME02 is not null and @SNAME02 = C_MATCH2.SNAME02) or(@SNAME03 <> '' and @SNAME03 is not null and @SNAME03 = C_MATCH2.SNAME03) or(@SNAME04 <> '' and @SNAME04 is not null and @SNAME04 = C_MATCH2.SNAME04) or(@SNAME05 <> '' and @SNAME05 is not null and @SNAME05 = C_MATCH2.SNAME05)))FETCH NEXT FROM c1 into @ACCOUNTID,@CONTACTID, @BRANCHID, @TYPE,@ACCOUNT01, @ACCOUNT02, @ACCOUNT03, @ACCOUNT04, @ACCOUNT05, @ACCOUNT06, @ACCOUNT07, @ACCOUNT08, @PREFIX01, @PREFIX02, @PREFIX03, @PREFIX04, @PREFIX05,@FNAME01, @FNAME02, @FNAME03, @FNAME04, @FNAME05, @FNAME06,@SNAME01, @SNAME02, @SNAME03, @SNAME04, @SNAME05,@WORKPHONE01,@WORKPHONE02,@WORKPHONE03,@WORKPHONE04,@WORKPHONE05,@FAX01,@FAX02,@FAX03,@FAX04,@FAX05,@ADD1NUM, @ADD2NUM,@ADD1UNIT, @ADD2UNIT,@ADD1_01,@ADD1_02,@ADD1_03,@ADD2_01,@ADD2_02,@ADD2_03,@CITY01,@CITY02,@CITY03,@PC01,@PC02,@PC03,@GENDERENDCLOSE c1DEALLOCATE c1Every Day's a School Day |
|
|
AndrewMurphy
Master Smack Fu Yak Hacker
2916 Posts |
Posted - 2011-09-20 : 04:50:17
|
| get yorr select query right and then prefix it with an insert along the style of below.insert into tabledselect col1, col2, casewhen col3 is null then abcelse defend as col3,etc from tablea inner join tableb b on a.cola=b.colbwhere a.value1 = x or b.value2 = y |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2011-09-20 : 05:20:50
|
Start to think set-based instead of RBAR.INSERT Processing.dbo.C_Score ( SourceID, SourceBranchID, SourceRating, TargetID, TargetAccID, SCOREACCOUNT01,SCOREACCOUNT02,SCOREACCOUNT03,SCOREACCOUNT04,SCOREACCOUNT05,SCOREACCOUNT06,SCOREACCOUNT07,SCOREACCOUNT08, SCOREPREFIX01,SCOREPREFIX02,SCOREPREFIX03,SCOREPREFIX04,SCOREPREFIX05, SCOREFNAME01,SCOREFNAME02,SCOREFNAME03,SCOREFNAME04,SCOREFNAME05,SCOREFNAME06, SCORESNAME01,SCORESNAME02,SCORESNAME03,SCORESNAME04,SCORESNAME05, SCOREWORKPHONE01,SCOREWORKPHONE02,SCOREWORKPHONE03,SCOREWORKPHONE04,SCOREWORKPHONE05, SCOREFAX01,SCOREFAX02,SCOREFAX03,SCOREFAX04,SCOREFAX05, SCOREADDNUM1, SCOREADDNUM2, SCOREADDNUMX, SCOREADD1UNIT, SCOREADD2UNIT, SCOREADDXUNIT, SCOREADD101,SCOREADD102,SCOREADD103, SCOREADD201,SCOREADD202,SCOREADD203, SCOREADDX01,SCOREADDX02,SCOREADDX03, SCORECITY01,SCORECITY02,SCORECITY03, SCOREPC01,SCOREPC02,SCOREPC03, SCOREGENDER01 )SELECT s.CONTACTID AS SOURCEID, s.BRANCHID AS SOURCEBRANCHID, s.TYPE AS SOURCERATING, a.CONTACTREF AS TARGETID, a.COMPANYREF AS TARGETACCID, CASE WHEN s.ACCOUNT01 = a.ACCOUNT01 THEN 1 ELSE 0 END AS SCOREACCOUNT01, CASE WHEN s.ACCOUNT02 = a.ACCOUNT02 THEN 1 ELSE 0 END AS SCOREACCOUNT02, CASE WHEN s.ACCOUNT03 = a.ACCOUNT03 THEN 1 ELSE 0 END AS SCOREACCOUNT03, CASE WHEN s.ACCOUNT04 = a.ACCOUNT04 THEN 1 ELSE 0 END AS SCOREACCOUNT04, CASE WHEN s.ACCOUNT05 = a.ACCOUNT05 THEN 1 ELSE 0 END AS SCOREACCOUNT05, CASE WHEN s.ACCOUNT06 = a.ACCOUNT06 THEN 1 ELSE 0 END AS SCOREACCOUNT06, CASE WHEN s.ACCOUNT07 = a.ACCOUNT07 THEN 1 ELSE 0 END AS SCOREACCOUNT07, CASE WHEN s.ACCOUNT08 = a.ACCOUNT08 THEN 1 ELSE 0 END AS SCOREACCOUNT08, CASE WHEN s.PREFIX01 = a.PREFIX01 THEN 2 WHEN COALESCE(s.PREFIX01, a.PREFIX01, '') = '' THEN 1 ELSE 0 END AS SCOREPREFIX01, CASE WHEN s.PREFIX02 = a.PREFIX02 THEN 2 WHEN COALESCE(s.PREFIX02, a.PREFIX02, '') = '' THEN 1 ELSE 0 END AS SCOREPREFIX02, CASE WHEN s.PREFIX03 = a.PREFIX03 THEN 2 WHEN COALESCE(s.PREFIX03, a.PREFIX03, '') = '' THEN 1 ELSE 0 END AS SCOREPREFIX03, CASE WHEN s.PREFIX04 = a.PREFIX04 THEN 2 WHEN COALESCE(s.PREFIX04, a.PREFIX04, '') = '' THEN 1 ELSE 0 END AS SCOREPREFIX04, CASE WHEN s.PREFIX05 = a.PREFIX05 THEN 2 WHEN COALESCE(s.PREFIX05, a.PREFIX05, '') = '' THEN 1 ELSE 0 END AS SCOREPREFIX05, CASE WHEN s.FNAME01 = a.FNAME01 THEN 2 WHEN COALESCE(s.FNAME01, a.FNAME01, '') = '' THEN 1 ELSE 0 END AS SCOREFNAME01, CASE WHEN s.FNAME02 = a.FNAME02 THEN 2 WHEN COALESCE(s.FNAME02, a.FNAME02, '') = '' THEN 1 ELSE 0 END AS SCOREFNAME02, CASE WHEN s.FNAME03 = a.FNAME03 THEN 2 WHEN COALESCE(s.FNAME03, a.FNAME03, '') = '' THEN 1 ELSE 0 END AS SCOREFNAME03, CASE WHEN s.FNAME04 = a.FNAME04 THEN 2 WHEN COALESCE(s.FNAME04, a.FNAME04, '') = '' THEN 1 ELSE 0 END AS SCOREFNAME04, CASE WHEN s.FNAME05 = a.FNAME05 THEN 2 WHEN COALESCE(s.FNAME05, a.FNAME05, '') = '' THEN 1 ELSE 0 END AS SCOREFNAME05, CASE WHEN s.FNAME06 = a.FNAME06 THEN 2 WHEN COALESCE(s.FNAME06, a.FNAME06, '') = '' THEN 1 ELSE 0 END AS SCOREFNAME06, CASE WHEN s.SNAME01 = a.SNAME01 THEN 2 WHEN COALESCE(s.SNAME01, a.SNAME01, '') = '' THEN 1 ELSE 0 END AS SCORESNAME01, CASE WHEN s.SNAME02 = a.SNAME02 THEN 2 WHEN COALESCE(s.SNAME02, a.SNAME02, '') = '' THEN 1 ELSE 0 END AS SCORESNAME02, CASE WHEN s.SNAME03 = a.SNAME03 THEN 2 WHEN COALESCE(s.SNAME03, a.SNAME03, '') = '' THEN 1 ELSE 0 END AS SCORESNAME03, CASE WHEN s.SNAME04 = a.SNAME04 THEN 2 WHEN COALESCE(s.SNAME04, a.SNAME04, '') = '' THEN 1 ELSE 0 END AS SCORESNAME04, CASE WHEN s.SNAME05 = a.SNAME05 THEN 2 WHEN COALESCE(s.SNAME05, a.SNAME05, '') = '' THEN 1 ELSE 0 END AS SCORESNAME05, CASE WHEN s.WORKPHONE01 = a.WORKPHONE01 THEN 1 ELSE 0 END AS SCOREWORKPHONE01, CASE WHEN s.WORKPHONE02 = a.WORKPHONE02 THEN 1 ELSE 0 END AS SCOREWORKPHONE02, CASE WHEN s.WORKPHONE03 = a.WORKPHONE03 THEN 1 ELSE 0 END AS SCOREWORKPHONE03, CASE WHEN s.WORKPHONE04 = a.WORKPHONE04 THEN 1 ELSE 0 END AS SCOREWORKPHONE04, CASE WHEN s.WORKPHONE05 = a.WORKPHONE05 THEN 1 ELSE 0 END AS SCOREWORKPHONE05, CASE WHEN s.FAX01 = a.FAX01 THEN 1 ELSE 0 END AS SCOREFAX01, CASE WHEN s.FAX02 = a.FAX02 THEN 1 ELSE 0 END AS SCOREFAX02, CASE WHEN s.FAX03 = a.FAX03 THEN 1 ELSE 0 END AS SCOREFAX03, CASE WHEN s.FAX04 = a.FAX04 THEN 1 ELSE 0 END AS SCOREFAX04, CASE WHEN s.FAX05 = a.FAX05 THEN 1 ELSE 0 END AS SCOREFAX05, CASE WHEN s.ADD1NUM = a.ADD1NUM THEN 1 ELSE 0 END AS SCOREADDNUM1, CASE WHEN s.ADD2NUM = a.ADD2NUM THEN 1 ELSE 0 END AS SCOREADDNUM2, CASE WHEN s.ADD1NUM = a.ADD2NUM THEN 1 ELSE 0 END AS SCOREADDNUMX, CASE WHEN s.ADD1UNIT = a.ADD1UNIT THEN 1 ELSE 0 END AS SCOREADD1UNIT, CASE WHEN s.ADD2UNIT = a.ADD2UNIT THEN 1 ELSE 0 END AS SSCOREADD2UNIT, CASE WHEN s.ADD1UNIT = a.ADD2UNIT THEN 1 ELSE 0 END AS SCOREADDXUNIT, CASE WHEN s.ADD1_01 = a.ADD1_01 THEN 1 ELSE 0 END AS SCOREADD101, CASE WHEN s.ADD1_02 = a.ADD1_02 THEN 1 ELSE 0 END AS SCOREADD102, CASE WHEN s.ADD1_03 = a.ADD1_03 THEN 1 ELSE 0 END AS SCOREADD103, CASE WHEN s.ADD2_01 = a.ADD2_01 THEN 1 ELSE 0 END AS SCOREADD201, CASE WHEN s.ADD2_02 = a.ADD2_02 THEN 1 ELSE 0 END AS SCOREADD202, CASE WHEN s.ADD2_03 = a.ADD2_03 THEN 1 ELSE 0 END AS SCOREADD203, CASE WHEN s.ADDX_01 = a.ADDX_01 THEN 1 ELSE 0 END AS SCOREADDX01, CASE WHEN s.ADDX_02 = a.ADDX_02 THEN 1 ELSE 0 END AS SCOREADDX02, CASE WHEN s.ADDX_03 = a.ADDX_03 THEN 1 ELSE 0 END AS SCOREADDX03, CASE WHEN s.CITY01 = a.CITY01 THEN 1 ELSE 0 END AS SCORECITY01, CASE WHEN s.CITY02 = a.CITY02 THEN 1 ELSE 0 END AS SCORECITY02, CASE WHEN s.CITY03 = a.CITY03 THEN 1 ELSE 0 END AS SCORECITY03, CASE WHEN s.PC01 = a.PC01 THEN 1 ELSE 0 END AS SCOREPC01, CASE WHEN s.PC02 = a.PC02 THEN 1 ELSE 0 END AS SCOREPC02, CASE WHEN s.PC03 = a.PC03 THEN 1 ELSE 0 END AS SCOREPC03, CASE WHEN s.GENDER = a.GENDER THEN 1 ELSE 0 END AS GENDER01 FROM ( SELECT c.UniAccRef AS AccountID, c.RecordID AS SourceID, c.SourceConID AS SourceBranchID, 'Prospect' AS SourceRating, Account01, Account02, Account03, Account04, Account05, Account06, Account07, Account08, Prefix01, Prefix02, Prefix03, Prefix04, Prefix05, FName01, FName02, FName03, FName04, FName05, FName06, SName01, SName02, SName03, SName04, SName05, Workphone01, Workphone02, Workphone03, Workphone04, Workphone05, Fax01, Fax02, Fax03, Fax04, Fax05, Add1Num, Add2Num, Add1Unit, Add2Unit, Add1_01, Add1_02, Add1_03, Add2_01, Add2_02, Add2_03, AddX_01, AddX_02, AddX_03, City01, City02, City03, Pc01, Pc02, Pc03, cm.Gender FROM Processing.dbo.Con AS c INNER JOIN Processing.dbo.C_Match AS cm ON cm.ContactID = c.RecordID LEFT JOIN Processing.dbo.Add_Match AS am ON am.BranchID = c.RecordID AND m.Type = 'CONTACT' WHERE c.UniAccRef > '' ) AS sINNER JOIN ( SELECT c.ContactRef AS TargetID, c.CompanyRef AS TargetAccID, cm.Account01, cm.Account02, cm.Account03, cm.Account04, cm.Account05, cm.Account06, cm.Account07, cm.Account08, cm.Prefix02, cm.Prefix02, cm.Prefix03, cm.Prefix04, cm.Prefix05, cm.FName01, cm.FName02, cm.FName03, cm.FName04, cm.FName05, cm.FName06, cm.SName01, cm.SName02, cm.SName03, cm.SName04, cm.SName05, cm.WorkPhone01, cm.WorkPhone02, cm.WorkPhone03, cm.WorkPhone04, cm.WorkPhone05, cm.Fax01, cm.Fax02, cm.Fax03, cm.Fax04, cm.Fax05, am.Add1Num, am.Add2Num, am.Add2Num, am.Add1Unit, am.Add2Unit,am.AddXUnit, am.Add1_01, am.Add1_02, am.Add1_03, am.Add2_01, am.Add2_02, am.Add2_03, am.AddX_01, am.AddX_02, am.AddX_03, am.City01, am.City02,am.City03, am.Pc01, am.Pc02, am.Pc03, cm.GENDER FROM UNIVERSE.dbo.Contacts AS c INNER JOIN UNIVERSE.dbo.C_Match AS cm ON cm.ContactID = c.ContactRef INNER JOIN UNIVERSE.dbo.Add_Match AS am ON am.AddressID = c.ContactRef ) AS a ON a.TargetAccID = s.AccountIDWHERE s.FName01 > '' AND s.FName01 = a.FName01 OR s.FName02 > '' AND s.FName02 = a.FName02 OR s.FName03 > '' AND s.FName03 = a.FName03 OR s.FName04 > '' AND s.FName04 = a.FName04 OR s.FName05 > '' AND s.FName05 = a.FName05 OR s.FName06 > '' AND s.FName06 = a.FName06 OR s.SName01 > '' AND s.SName01 = a.SName01 OR s.SName02 > '' AND s.SName02 = a.SName02 OR s.SName03 > '' AND s.SName03 = a.SName03 OR s.SName04 > '' AND s.SName04 = a.SName04 OR s.SName05 > '' AND s.SName05 = a.SName05 N 56°04'39.26"E 12°55'05.63" |
 |
|
|
MontyMagic
Starting Member
12 Posts |
Posted - 2011-09-20 : 07:12:07
|
| Hi SWEPESOI monkeyed a little with the script to get it working on my server, but it worked beautifully. What a difference, again minutes rather than hours. I am definately converted to replacing cursors wherever possible.Many thanks for your suggestions and assistance.MontyEvery Day's a School Day |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2011-09-20 : 08:37:11
|
You're welcome. N 56°04'39.26"E 12°55'05.63" |
 |
|
|
|
|
|