我想在 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
不想重复选择,因为真正的选择比这个大得多。
常见的做法是:
WHERE
C.Id = @company
AND S.Created >= @from
AND S.Created <= @to
AND (@serie_type IS NULL OR S.Type = @serie_type)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)