我有以下以以下内容开头的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.[birthdate] = B.[birthdate]
我尝试了以下方法,但似乎都无法正常工作:
示例1:
AND (@Birthdate = 1 AND A.[birthdate] = B.[birthdate])
Ex 2:
AND ((@Birthdate = 1 AND A.[birthdate] = B.[birthdate]) OR
(@Birthdate = 0 AND (A.[birthdate] = B.[birthdate] OR
A.[birthdate] <> B.[birthdate])))
关于我在做什么错的任何建议吗?
答案 0 :(得分:2)
您可以使用or
来应用过滤器,或者仅在@Birthdate = 0
时返回所有行
SELECT
...
FROM
...
WHERE
(
-- Apply the filter if applicable
(
@Birthdate = 1
and A.[birthdate] = B.[birthdate]
)
-- Or return everything
or @Birthdate <> 1
)