Ваши кавычки перепутаны в последней строке, вы не можете смешивать динамический и нединамический SQL в одном выражении. Также при условии, что @TheLevel - это число, если @TheLevel - это символ, вам нужно преобразовать его в число (в этом случае, я полагаю, int)
SELECT TOP 10 *
FROM
ALL_COMPLAINTS A
JOIN
#TEMP5 B ON A.QXP_EXCEPTION_NO = B.QXP_EXCEPTION_NO
AND A.[LEVEL] = B.[LEVEL]
AND A.[QXP_REPORT_DATE] = B.[QXP_REPORT_DATE]
WHERE
A.QXP_REPORT_DATE >= CONVERT(DATETIME, '' + @FirstMonthDate + ' 00:00:00', 102)
AND
A.QXP_REPORT_DATE <= CONVERT(DATETIME, '' + @LastMonthDate + ' 23:59:59', 102)
AND
A.QXP_SHORT_DESC <> 'Design Control' AND A.LEVEL = @TheLevel
Если вам нужна динамическая часть, то, вероятно, рекомендуется предварительно оценить ее, а затем ввести ее в нединамический запрос