As Gail states.
You may get some mileage from this:
-- Extract this chunk of your query separately
--------------------------------------------------------------------
JOIN OSS_BENCHMARK_PRICE_REFERENCE PR
ON L.DAILY_BENCHMARK_LOCAL_SEQ=PR.DAILY_BENCHMARK_LOCAL_SEQ
JOIN RD_MARKET_PRICE MP
ON MP.MARKET_PRICE_SEQ=PR.MARKET_PRICE_SEQ
OR MP.MARKET_PRICE_SEQ=PR.FUEL_MARKET_PRICE_SEQ
OR MP.MARKET_PRICE_SEQ=PR.GAS_MARKET_PRICE_SEQ
LEFT JOIN OSS_MARKET_PRICE_DAILY FPD
ON MP.MARKET_PRICE_SEQ=FPD.MARKET_PRICE_SEQ
AND MP.PRICE_TYPE_CD ='FREIGHT'
AND FPD.OPTIMISATION_JOB_SEQ= @JOB_ID
AND CONVERT(VARCHAR(8), FPD.APPLICABLE_DT, 112)= CONVERT(VARCHAR(8), G.price_dt, 112)
LEFT JOIN OSS_MARKET_PRICE_DAILY FOPD
ON MP.MARKET_PRICE_SEQ=FOPD.MARKET_PRICE_SEQ
AND MP.PRICE_TYPE_CD ='FUEL OIL'
AND FOPD.OPTIMISATION_JOB_SEQ= @JOB_ID
AND CONVERT(VARCHAR(8), FOPD.APPLICABLE_DT, 112)= CONVERT(VARCHAR(8), G.price_dt, 112)
LEFT JOIN OSS_MARKET_PRICE_DAILY GOPD
ON MP.MARKET_PRICE_SEQ=GOPD.MARKET_PRICE_SEQ
AND MP.PRICE_TYPE_CD ='GAS OIL'
AND GOPD.OPTIMISATION_JOB_SEQ = @JOB_ID
AND CONVERT(VARCHAR(8), GOPD.APPLICABLE_DT, 112)= CONVERT(VARCHAR(8), G.price_dt, 112)
-------------------------------------------------------------------
-- something like this. Set it up either as a CTE, a derived table,
-- or (probably faster) a #temporary table
SELECT
PR.DAILY_BENCHMARK_LOCAL_SEQ,
APPLICABLE_DT = CONVERT(VARCHAR(8), FPD.APPLICABLE_DT, 112),
FREIGHT_RATE = CASE WHEN MP.PRICE_TYPE_CD ='FREIGHT' THEN FPD.QUOTE_VAL ELSE 0 END,
BUNKER_RATE = CASE WHEN MP.PRICE_TYPE_CD ='FUEL OIL' THEN FPD.QUOTE_VAL ELSE 0 END,
DIESEL_RATE = CASE WHEN MP.PRICE_TYPE_CD ='GAS OIL' THEN FPD.QUOTE_VAL ELSE 0 END
FROM OSS_BENCHMARK_PRICE_REFERENCE PR
INNER JOIN RD_MARKET_PRICE MP
ON MP.MARKET_PRICE_SEQ IN (PR.MARKET_PRICE_SEQ, PR.FUEL_MARKET_PRICE_SEQ, PR.GAS_MARKET_PRICE_SEQ)
LEFT JOIN OSS_MARKET_PRICE_DAILY FPD
ON MP.MARKET_PRICE_SEQ = FPD.MARKET_PRICE_SEQ
--AND MP.PRICE_TYPE_CD ='FREIGHT'
AND FPD.OPTIMISATION_JOB_SEQ = @JOB_ID
--AND CONVERT(VARCHAR(8), FPD.APPLICABLE_DT, 112)= CONVERT(VARCHAR(8), G.price_dt, 112)
GROUP BY
PR.DAILY_BENCHMARK_LOCAL_SEQ,
CONVERT(VARCHAR(8), FPD.APPLICABLE_DT, 112)
-- note that functions in JOINs and the WHERE clause are likely to render the search non-SARGable
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