根据参数应用自定义 WHERE 条件

问题描述 投票:0回答:0

我有一个存储过程,其中包含一个在 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”参数调用它,我不会得到任何值,除非我注释掉最后一点。

如何实现这种逻辑?

谢谢。

sql where-clause sql-server-2016
© www.soinside.com 2019 - 2024. All rights reserved.