Myślę, że rozwiązanie może teoretycznie pomóc w zwiększeniu wydajności, ale zależy to również od tego, co faktycznie robi funkcja skalarna. Myślę, że w tym przypadku (przypuszczam, że formatowanie daty do ostatniego dnia w kwartale) byłoby naprawdę znikome.
Możesz przeczytać tę stronę z sugerowanymi obejściami:
W Obejściach znajduje się komentarz, który
Wygląda więc na to, że tak, może to zwiększyć wydajność.
Twoje rozwiązanie jest poprawne, ale sugerowałbym rozważenie ulepszenia SQL, aby zamiast tego używać ELSE, dla mnie wygląda to czyściej:
AND ReportTypeID = CASE WHEN (@X = 1) THEN 1
ELSE 4
END;