我有一个存储过程,其中包含一个在 WHERE 子句中具有多个条件的查询。
我可以用 2 个不同的参数调用这个存储过程。如果我用“X”参数调用它,我想应用一个特定的条件,但是如果我用“Y”参数调用它,我不想应用那个条件。
但是,where 子句中的其余条件应适用于“X”和“Y”参数。
SELECT t.*
FROM tbl_1 t
WHERE 1 = 1
-- I want these two conditions to apply to both 'X' and 'Y' parameters
AND EXISTS (SELECT ..... WHERE value = @Param)
AND NOT EXISTS (SELECT ..... WHERE value = @Param)
--and lastly the third condition should only be applied if I have 'X' parameter when calling this procedure
AND (@Param = 'X'
AND t.ApptDt > '02/02/2023'
AND t.CallDt > '02/1/2023')
这个逻辑好像不行。如果我用“Y”参数调用它,我不会得到任何值,除非我注释掉最后一点。
如何实现这种逻辑?
谢谢。