Я запускаю отчет для таблицы Sales
:
SaleId INT | SalesUserID INT | SiteID INT | BrandId INT| SaleDate DATETIME
У меня кошмар, когда я пытаюсь сделать что-то подобное с набором параметров Nullable @SalesUserID
, @SiteId
, @BrandID
и два параметра DateTime.
Дополнительная точка: Только ОДИН из параметров фильтра будет передан как ненулевое значение.
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
)
Мое использование CASE
здесь плохо пахнет, но я не уверен, как это исправить.Не могли бы вы помочь?
Спасибо.
5arx