我有以下 where 子句,其开头如下:
DECLARE @Birthdate = 1
SELECT ...
FROM ...
JOIN ...
WHERE A.organization_id = 1
AND LEFT(A.[first_name], 3) = LEFT(B.[first_name], 3)
AND LEFT(A.[last_name], 3) = LEFT(B.[last_name], 3)
在此之后,我想有条件地执行附加子句。
例如:
- 如果
@Birthdate = 1
,则添加AND A.[出生日期] = B.[出生日期]
- 否则,请勿添加任何内容
我尝试了以下方法,但似乎都无法正常工作:
示例 1:
AND (@Birthdate = 1 AND A.[birthdate] = B.[birthdate])
示例 2:
AND ((@Birthdate = 1 AND A.[birthdate] = B.[birthdate]) OR
(@Birthdate = 0 AND (A.[birthdate] = B.[birthdate] OR
A.[birthdate] <> B.[birthdate])))
对于我做错了什么有什么建议吗?
最佳答案
您可以使用或
来应用过滤器,或者在@Birthdate = 0
时返回所有行
SELECT
...
FROM
...
WHERE
(
-- Apply the filter if applicable
(
@Birthdate = 1
and A.[birthdate] = B.[birthdate]
)
-- Or return everything
or @Birthdate <> 1
)
关于SQL Server 条件 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51090423/