Here are several suggestions -
--SELECT @From = COALESCE(@From, Min(QuotationDate)),
-- @To = COALESCE(@To , Max(QuotationDate))
--FROM dbo.Quotation;
--DECLARE @F_Loc DateTime = @From,
-- @T_Loc DateTime = @To;
-- DECLARE @CutOffDate DateTime = DATEADD(MONTH, -3, CURRENT_TIMESTAMP);
SELECT QU.QuotationId,
ISNULL(QUIC.Next_Follow_Up, 0)
FROM dbo.Quotation QU
OUTER APPLY (
SELECT TOP 1 Next_Follow_Up
FROM Quotation.Follow_Up f
WHERE f.QuotationId = QU.QuotationId
ORDER BY Id DESC
) QUIC
WHERE ((@From IS NULL OR QU.QuotationDate > @From) OR QUIC.Next_Follow_Up > 0)
AND (@To IS NULL OR QU.QuotationDate <= @To)
ORDER BY QU.QuotationId DESC;
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