Я хочу создать процедуру в SQL Server, которая будет выбирать и объединять две таблицы. Параметры @company, @from и @to всегда установлены, но @serie_type может иметь значение NULL. Если @serie_type не NULL, я просто хочу включить указанные типы, просто AND 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
Не хочу дублировать выделение, потому что реальное выделение намного больше этого.