Фильтрация

Тема в разделе "SQL", создана пользователем Samuel, 24 авг 2010.

  1. Samuel

    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]
     
  2. Aleksey

    Aleksey Гость

    Если БД поддерживает динамический SQL, то можно, согласно входящим значениям, сгенерировать строку с запросом и выполнить его. Или же просто написать три запроса с разными условиями WHERE :)

    Вдогонку еще скажу, что в процедуре SELECT должен иметь форму SELECT ... INTO.
     
  3. etc

    etc Гость

    Код (Text):
    WHERE (@SignFilter = '=' AND (a.Year = @YearFilter OR a.Price = @PriceFilter)) OR ...
    Смысл ясен?
     
Загрузка...

Поделиться этой страницей