• First of all, did you look at the query plans between the two approaches? Or flush caches?

    Secondly, why use a boolean flag when the below approach is simpler and should yield the same plan? (I'll try to verify that with your test data):

    LEFT JOIN @CalTable AS ct ON

    wt.Work_Start <= ct.CalDate

    WHERE ct.CalDate <= wt.Work_End

    Third, as Carlo points out, your approach is not identical to the original query. It partially transforms a left join into an inner join, which may go a long way to explaining why it ran faster.