Представление может быть отфильтровано по этим трем столбцам:
Profit(bit), Loss(bit), NoImpact(bit)
Предыстория: на веб-странице пользователь может выбрать фильтрацию данных на основе трех флажков (Прибыль, Убыток, Без влияния).
Что я ищу: если они проверяют «Прибыль», возвращают все, где «Прибыль» = 1, если тогда они проверяют «Убыток», показывают результаты «Прибыль» И «Убыток», но исключают «NoImpact» и т. Д. .
Это то, что я пробовал до сих пор, и часть моего сохраненного про c:
WHERE (
((@ProfitSelected is null OR @ProfitSelected = 'false') OR (Profit = @ProfitSelected))
--I've tried using AND here as well.
OR ((@LossSelected is null OR @LossSelected = 'false') OR (Loss = @LossSelected))
OR ((@NoImpactSelected is null OR @NoImpactSelected = 'false') OR (NoImpact = @NoImpactSelected))
)
END
exec dbo.SearchErrorReports @ProfitSelected = 1, @LossSelected = 1, @NoImpactSelected = 0
Спасибо.
РЕДАКТИРОВАТЬ: По запросу здесь некоторые тесты и желаемые результаты:
ТЕСТ exec dbo.SearchErrorReports @ProfitSelected = 1, @LossSelected = 1, @NoImpactSelected = 0
Результат
id | Profit | Loss | NoImpact
----------------------------------------
1 | 1 | 0 | 0
2 | 1 | 0 | 0
3 | 0 | 1 | 0
4 | 0 | 1 | 0
5 | 0 | 1 | 0
ТЕСТ exec dbo.SearchErrorReports @ProfitSelected = 0, @LossSelected = 1, @NoImpactSelected = 0
Результат
id | Profit | Loss | NoImpact
----------------------------------------
1 | 0 | 1 | 0
2 | 0 | 1 | 0
3 | 0 | 1 | 0
ТЕСТ exec dbo.SearchErrorReports @ProfitSelected = 1, @LossSelected = 1, @NoImpactSelected = 1
Результат
id | Profit | Loss | NoImpact
----------------------------------------
1 | 1 | 0 | 0
2 | 0 | 1 | 0
3 | 0 | 1 | 0
4 | 0 | 0 | 1
5 | 1 | 0 | 0
6 | 0 | 0 | 1
Et c и все различные перестановки.