我想在 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
不想复制选择,因为真正的选择比这个大得多。