• A significant number of implicit conversions are interfering with optimisation of this query. Here's a few recommendations to start with:

    Cast @YearFrom and @YearTo to same datatype as BRFCLSeaWeekHis.Year

    Cast @QuoteType to same datatype as BRFCLSeaWeekHis.QuoteType

    Temp table #TradeLanes: cast PortFrom and PortTo to same datatype as BRFCLSeaWeekHis.PortFrom and BRFCLSeaWeekHis.PortTo

    Temp table #Incoterms: cast Code to same datatype as BRFCLSeaWeekHis.IncotermCode

    Get these done, run the query again and post the execution plan.

    “Write the query the simplest way. If through testing it becomes clear that the performance is inadequate, consider alternative query forms.” - Gail Shaw

    For fast, accurate and documented assistance in answering your questions, please read this article.
    Understanding and using APPLY, (I) and (II) Paul White
    Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden