S
Samuel
Контекст: фильтр по году, т.е. год может быть больше введенного значения, год может быть равен введенному значению, год может быть меньше введенного значения. Я передаю в процедуру введенное значение и знак, по которому определяется как фильтровать. И аналогичный фильтр по цене. Как это все реализовать в конструкции "WHERE"? Через оператор CASE можно ?
Кусочек моего кода:
[sql]CREATE PROCEDURE [dbo].[xp_GetAutos]
(
@YearFilter INT = NULL,
@PriceFilter INT = NULL,
@SignFilter VARCHAR (1) = NULL
)
AS BEGIN SELECT a.Name, a.Year, a.Price
FROM Auto AS a
WHERE CASE @SignFilter
WHEN '=' THEN (a.Year = @YearFilter OR a.Price = @PriceFilter)
WHEN '>' THEN (a.Year > @YearFilter OR a.Price > @PriceFilter)
WHEN '<' THEN (a.Year < @YearFilter OR a.Price < @PriceFilter)
END
END[/sql]
Кусочек моего кода:
[sql]CREATE PROCEDURE [dbo].[xp_GetAutos]
(
@YearFilter INT = NULL,
@PriceFilter INT = NULL,
@SignFilter VARCHAR (1) = NULL
)
AS BEGIN SELECT a.Name, a.Year, a.Price
FROM Auto AS a
WHERE CASE @SignFilter
WHEN '=' THEN (a.Year = @YearFilter OR a.Price = @PriceFilter)
WHEN '>' THEN (a.Year > @YearFilter OR a.Price > @PriceFilter)
WHEN '<' THEN (a.Year < @YearFilter OR a.Price < @PriceFilter)
END
END[/sql]