Или просто позвольте оптимизатору запросов иметь его:
WHERE ( @allocatedStartDate is NULL or Allocated >= allocatedStartDate ) and
( @allocatedEndDate is NULL or Allocated <= @allocatedEndDate ) and
( @matterOpenedStartDate is NULL or MatterOpened >= @matterOpenedStartDate ) and
( @matterOpenedEndDate is NULL or MatterOpened <= @matterOpenedEndDate )
Обратите внимание, что это логически не эквивалентно вашему запросу. В последней строке используется столбец MatterOpened, а не Allocated, как я полагаю, это типографская ошибка.
Если производительность действительно является проблемой, вы можете рассмотреть возможность добавления индексов и изменения хранимой процедуры для выполнения различных запросов на основе параметров. По крайней мере, разбейте его на: без фильтра, фильтр только для Allocated, фильтр только для MatterOpened, фильтр для обоих столбцов.