Выберите все, если параметр равен нулю в хранимой процедуре

Я хочу создать в SQL Server процедуру, которая будет выбирать и соединять две таблицы. Параметры @company, @from и @to всегда устанавливаются, но @serie_type может быть NULL. Если @serie_type не NULL, я просто хочу включить указанные типы, просто И S.Type = @serie_type, но если @serie_type NULL, я хочу включить все типы, просто, просто не включайте оператор AND. Моя проблема в том, что я не знаю, будет ли установлен @serie_type, поэтому я хотел бы иметь что-то вроде этого:

/* pseudocode */
??? = AND (IF @serie_type IS NOT NULL S.Type = @serie_type)

Вот упрощенная версия процедуры:

CREATE PROCEDURE Report_CompanySerie
    @company    INT,
    @serie_type INT,
    @from       DATE,
    @to         DATE
AS
BEGIN
    SELECT
        *
    FROM Company C
        JOIN Series S ON S.Company_FK = C.Id
    WHERE C.Id = @company 
        AND S.Created >= @from
        AND S.Created <= @to
/* HERE IS MY PROBLEM */        
        AND ???
END
GO

Не хочу дублировать select, так как реальный select намного больше этого.

9
задан t-clausen.dk 22 September 2011 в 11:33
поделиться