CASE
ожидает выражений , отсюда и ошибка.Альтернативой с точки зрения производительности является использование оператора UNION ALL
, например, такого:
select * from ERP.dbo.EmployeeRole
where @Designation=80 AND storeID in (
select storeID
from ERP.dbo.Store
where companyID=@CompanyID and isMonitoringAvailable=1
and storeID=ISNULL(@StoreId,storeID)
)
UNION ALL
select * from ERP.dbo.EmployeeRole
where @Designation<>80 AND storeID in (
select storeID
from ERP.dbo.EmployeeRole
where employeeID=@EmployeeId
and storeID=ISNULL(@StoreId,storeID)
)
. Другой подход - использовать IF-ELSE
, но лучше будет UNION ALL
.