One option is to use the case expression on the join (assuming the datatypes match?):select rm.ParentID, Dba_Name, Post_Code, HO, LBG_Account, LBG_Status, Account_Status, Sales_Annualised, SalesBandinginto #test From #RM rm inner join [FDMS].[dbo].[Dim_Outlet] o on o.FDMSAccountNo = rm.ParentID inner join [FDMS].[dbo].[Geo_PCA_Sellers] PCA ON PCA.pc = CASE WHEN Isnumeric(RIGHT(LEFT(o.post_code, 2), 1)) = 0 THEN LEFT(o.post_code, 2) ELSE LEFT(o.post_code, 1) ENDwhere LBG_Status <> 'accepted' and Account_Status ='16' AND iso_account = 'N' AND Open_Date < dateadd(mm, -3, getdate()) and Agent_Chain_No not in ('878970059886', '878970013883') AND fdmsaccountno NOT IN (SELECT [ta_mid] FROM fdms_partnerreporting.tmp.trade_assocations) and Sales_Annualised > 1999999order by DBA_Name