I would use dynamically generated code in this case:
declare @SalesUserId int,@SiteId int,@StartDate datetime, @EndDate datetime,@BrandID int declare @sql nvarchar(max) set @sql = N' SELECT * from Sales WHERE SaleDate BETWEEN @StartDate AND @EndDate AND SalesUserID IN ( Select SalesUserID FROM Sales WHERE SaleDate BETWEEN @StartDate AND @EndDate AND ' + CASE WHEN @SalesUserId IS NOT NULL THEN 'SalesUserId = @SalesUserID' WHEN @SiteId Is Not Null THEN 'SiteId = @SiteId' ELSE 'BrandId = @BrandID' END +')' print @sql exec sp_executesql @sql , N'@SalesUserId int, @SiteId int, @StartDate datetime, @EndDate datetime, @BrandID int' ,@SalesUserId ,@SiteId ,@StartDate ,@EndDate ,@BrandID
source share