Вы можете построить динамический запрос. По сути, вы строите строку и затем выполняете ее. (Остерегайтесь атак с использованием SQL-инъекций).
Другой подход заключается в использовании оператора case, который, если у вас нет большого количества опций, стоит попробовать:
select CaseId from app_Case
where case when @searchCat='field1'
then field1
else @searchVal
end = @searchVal and
case when @searchCat='field2'
then field2
else @searchVal
end = @searchVal
Другой подход состоит в том, чтобы сделать то же самое с помощью или предложений:
select CaseId from app_Case
where (@searchCat='Field1' and Field1=@searchVal) OR
(@serachCat='Field2' and Field2=@searchVal)