You need to get the start and end dates for each SalesRep.Assuming the data you have shown is from ClientSalesReps, which is far from clear, then do something like the following:;WITH RepClientOrderAS( SELECT CompanyId, ClientId, EffectiveDate, SalesRep ,ROW_NUMBER() OVER (PARTITION BY CompanyId, ClientID ORDER BY EffectiveDate) AS RowNum FROM ClientSalesReps), RepClientAS( SELECT R1.CompanyId, R1.ClientId, R1.SalesRep ,R1.EffectiveDate AS StartDate ,COALESCE(R2.EffectiveDate, CAST('99991231' AS datetime)) AS EndDate FROM RepClientOrder R1 LEFT JOIN RepClientOrder R2 ON R1.CompanyId = R2.CompanyId AND R1.ClientId = R2.ClientId AND R1.RowNum = R2.RowNum - 1)-- select * from RepClientOrder order by CompanyId, ClientId, RowNum-- select * from RepClient order by CompanyId, ClientId, StartDateSELECT *FROM RevenuePayers RP JOIN AccessionIndex AI ON RP.CompanyId = AI.CompanyId AND RP.ClientId = AI.ClientId AND RP.Accession = AI.Accession JOIN RepClient RC ON RP.CompanyId = RC.CompanyId AND RP.ClientId = RC.ClientId AND AI.DOS >= RC.StartDate AND AI.DOS < RC.EndDate--etc